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