Activity:
<activity
android:name="com.example.testsingleinstance.SingleInstanceActivity"
android:label="@string/title_activity_single_instance"
android:launchMode="singleInstance">
<intent-filter>
<action android:name="android.intent.action.SingleInstance" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>@Override
protected void onResume() {
super.onResume();
i = getIntent();//任然为原来的intent得不到新传入的数据
String s = i.getStringExtra("TT");
}错误:
在多次传Intent数据给singleInstance 类型的Activity时,在onResume中无法获取新传入的Intent,
用getIntent()只能获取原Activity的Intent.
解决办法:
让singleInstance的Activity获取传入的Intent,并获取Extra数据:
只需重载:onNewIntent(Intent intent)
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
生命周期
第一次:onCreate()----> onStart()---->onResume()---->[ ] ----> onPause ---[不可见 ]
第二次: onNewIntent()----> [在执行该方法前会执行onNewIntent ] onResume()---->
当向singleInstance类型的Activity多次发送Intent时,onResume中无法通过getIntent()获取最新Intent。解决方法是在Activity中重写onNewIntent(),在这里可以获取到新的Intent数据。在生命周期中,首次启动走onCreate到onResume,后续启动会先调用onNewIntent再进入onResume。
469





