默认情况下(LaunchMode=Startand)使用new Intent()方法从MainActivity跳转到main2Activity再跳转回MainActivity时会重新创建一个新的FirstActivity,重新执行onCreate()等方法并将MainActivity存放在栈中;而如果你在AndroidManifest.xml中配置LaunchMode为SingleTask,SingleInstance,SingleTop的话,执行上述操作时,会去调用onnewIntent方法,不会去调用onCreate()方法;
(1)清单文件中定义:
(2)MainActivity和Main2Activity中的操作
MainActivity中重写onNewIntent方法 Main2Activity跳转回MainActivity(3)结果就会如预期一样执行Mainactivity中的onNewIntent方法
特别注意:可以执行onNewIntent方法的前提是该Activity存在在堆栈中,如果在跳转回该Activity之前目标Activity已经从堆栈中移除了,则不会执行该方法。
判断Activity是否仍存在在堆栈中:
ActivityManager mAM= (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List list = mAM.getRunningTasks(2);
if(list!=null && list.size()>0){
for(int i=0;i
ComponentName name = list.get(i).baseActivity;
Log.e(MainActivity.TAG, "onClick: "+name.getClassName() );
String str="com.example.threadpoolapp.MainActivity";
Log.e(MainActivity.TAG, "onClick: "+(str.equals(name.getClassName())) );
}
}
网友评论