最近在开发过程中碰到了一个问题:
(android gc 暂不考虑,测试多种机型,后台内存过小,会清理一定内存空间,并不是绝对会将你app杀掉;至于考虑如何大程度保证应用的后台存活率,方法太杂,如有朋友有实践的方法,望留下评论,谢谢~)
1. 由USB跑应用,进入界面,按下Home键返回桌面,点击应用 进入 仍然能返回 之前界面;
2. 通过手机安装器安装应用,安装成功有两个按钮,完成 - 打开。点完成 ,在桌面点击启动应用,退到后台,也能回到之前界面。
3.同上,只不过是点击了打开按钮,那么此时会从安装器直接打开应用,当应用退到后台时,桌面点击,并不是回到了我们之前的页面,而是像第一次打开应用时,比如导航页启动、再到主界面。而当你返回键退出时,又会发现,你又回到了之前Home键退到后台的页面。
其实以上问题不难理解,通过安装器启动应用 Intent没有带Category,而我们打开程序是带了Category,那么我们在我们配置了<actionandroid:name="android.intent.action.MAIN"/> 判断是否有Category;之前看很多 标注了这样的方法:
if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0){ finish(); return; }
但在很多机型上并不适用;并没有真正的检测到当前页面的 Category,比如:小米5X,华为荣耀;
用以上方法不能解决的可用以下方法:
if(!this.isTaskRoot()) { Intent mainIntent=getIntent(); String action=mainIntent.getAction(); if(mainIntent.hasCategory(Intent.CATEGORY_LAUNCHER) && action.equals(Intent.ACTION_MAIN)) { finish(); return; } }有难点希望多探讨谢谢~