最近遇到了一个问题,从launcher重新进入已经运行的应用会直接跳到应用的第一个界面。
经过对应用的跟踪,结合网络上的资料
http://stackoverflow.com/questions/19545889/app-restarts-rather-than-resumes
定位了BUG。
【BUG描述】
这个是一个Android BUG, 其实应用并没有完全重启,只是又启动了一个第一界面,然后放到了任务栈的顶部,这时候,我们点击BACK会回到我们期望的正确界面。
操作步骤为,安装,点击开始,点击HOME,点击图标。
【解决】
这个问题的解决思路是,在第一个界面的oncreate里面判断当前应用是否已经启动,并判断intent信息,如果已经启动过了,并且信息符合,那么我们就结束这个新开的第一界面。
代码如下
1 private void checkIsRunning() 2 { 3 if (!isTaskRoot() 4 && getIntent().hasCategory(Intent.CATEGORY_LAUNCHER) 5 && getIntent().getAction() != null 6 && getIntent().getAction().equals(Intent.ACTION_MAIN)) { 7 finish(); 8 return; 9 } 10 }