1、先说现象
现在有三个activity:FirstActivity、SecondActivity和ThirdActivity,并且FirstActivity为启动入口
即FirstActivity在AndroidManifest.xml中配置有
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
一、给FirstActivity添加LaunchMode="SingleTask"
(此时SecondActivity和ThirdActivity加不加LaunchMode="SingleTask"效果一样)
进入应用到ThirdActivity或者SecondActivity然后按HOME键
①在桌面上点击应用图标进入应用会发现还是进入了FirstActivity,并且此时的SecondActivity和ThirdActivity
分别调用了onDestory()方法。
②长按HOME键进入应用没有进入FirstActivity,而是打开了应用最后一次打开的activity,并且此时调用了最
后一次打开的activity的onRestart->onStart->onResume方法。
③在FirstActivity的onCreate方法中添加延迟finish的处理,比如
new Handler().postDelayed(new Runnable() { public void run() { finish(); } }, 1500);
之后在桌面上点击应用图标进入应用会发现还是进入了FirstActivity,但是这是一个新的实例,之前的已经finish掉了,所以此时的SecondActivity和ThirdActivity
并不会调用onDestory()方法。
二、去掉FirstActivity的LaunchMode="SingleTask"
(此时SecondActivity和ThirdActivity加不加LaunchMode="SingleTask"效果一样)
在任何一个界面按HOME键,然后不管是从桌面打开应用还是长按HOME键打开应用都是
进入到应用最后一次打开的activity。
2、具体原理有待进一步研究,有明白原理的童鞋请支招,不胜感激!