Android从APP内点击HOME键切出应用后再次点击桌面图标会重启APP的bug
bug场景
- 打开APP里的某个页面 — 按Home键 — 从桌面点击APP的图标 — 这个时候希望的是APP打开刚才停留的页面,但是没有,而是APP从启动页开始重新打开了,也就是APP重新启动了,不是想要的结果 — 并且经过尝试发现,如果是从后台菜单选项中点APP的选项打开,是停留在刚才打开着的页面的,没有重启,这个流程是对的。
探索
- 从后台程序菜单选项中打开程序时,启动的Intent是没有带Category的
- 而我们自己打开程序时是带了Category的
- 由以上两条可知,只需要在配置android.intent.action.MAIN的Activity判断一下有无Category
代码
- 我的启动页是 SplashActivity ,在 manifest 文件中可看到如下
<activity
android:name=".activity.SplashActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- 修改 SplashActivity 中的内容,在 onCreate 中添加:
if (!this.isTaskRoot()) {
Intent intent = getIntent();
if (intent != null) {
String action = intent.getAction();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {
finish();
return;
}
}
}