launcher启动应用重启的BUG解决

最近遇到了一个问题,从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     }
原文地址:https://www.cnblogs.com/u3shadow/p/4959009.html