Android 再次打开APP进入按Home键退出时的界面(thisTaskRoot),

问题

Android 设置页面的启动模式为 singletask 之后,当按Home 退出时,再重新打开应用,还会进入首启动页。就会造成一些应用需要重新登录,当前页数据丢失等问题

解决

去除启动页的 singletask 的启动模式(AndroidManifest.xml)

在启动页activity添加如下代码

1 //避免从桌面启动程序后,会重新实例化入口类的activity

2 if (!this.isTaskRoot()) { //判断当前activity是不是所在任务栈的根

3 Intent intent =getIntent();4 if (intent != null) {5 String action =intent.getAction();6 if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) &&Intent.ACTION_MAIN.equals(action)) {7 finish();8 return;9 }10 }11 }

分析

虽然我们解决了问题,但我们也要分析解决问题的思路。

哈哈哈,可能你说思路就是百度,别人这样写,反正我用了也成功了。(but 我们要往优秀程序员的方向发展)

第一步(看代码进行了什么处理)

第二行: this.isTaskRoot() 判断是否是activity栈 最下方一个

第三行:getIntent() 获取该上一个页面传过来的intent的信息。因为在启动页中,我们会设置

第六行:判断是否通过启动页启动,也有可能是代码中的需求跳转,这种情况不能把页面销毁了。

第七行:销毁当前启动页

【思考】那么为什么如果是外部启动的就 finish 呢?

第二步(看看别人怎么说)

参考1:https://www.jianshu.com/p/eea14ca0b164

0b93b2a5dcb33b323e954827a2af9f54.png

d9bf33d20a96a239d270d5d7f095b422.png

http://www.dengb.com/Androidjc/1383861.htmlwww.dengb.comtruehttp://www.dengb.com/Androidjc/1383861.htmlTechArticleAndroid 再次打开APP进入按Home键退出时的界面(thisTaskRoot), 问题 Android 设置页面的启动模式为 singletask 之后,当按Home 退出时,再重新打开...

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐