问题描述:入口Activity A为singleTask, 另一个Activity B,App 启动后由A进入B,按home键退出,分别从最近任务和Launcher重新进入App
从任务列表上是可以正常恢复到B
从Launcher上恢复的时候进入到了A,并且 B destory了
说明从任务列表和Launcher恢复任务栈的操作是不太一样的,为什么会这样我只找到了文档,但没理解,Tasks and Back Stack
以下为说明:
1.点击Launcher里面的图标,本质上就是调用的startActivity,action是android.intent.action.MAIN,category是android.intent.category.LAUNCHER,flag是FLAG_ACTIVITY_RESET_TASK_IF_NEEDED & FLAG_ACTIVITY_NEW_TASK,component是你的A。
你需要看ActivityManager的源码去了解FLAG_ACTIVITY_RESET_TASK_IF_NEEDED 配合singleTask做了什么。(android Application Component研究之Activity(一)
,里面讲了FLAG_ACTIVITY_RESET_TASK_IF_NEEDED )
2.从RecentActivity进入,源码里面对flag做了这种处理:
intent.setFlags((intent.getFlags()&~Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED) | Intent.FLAG_ACTIVITY_NEW_TASK);
去掉了flag里面FLAG_ACTIVITY_RESET_TASK_IF_NEEDED那一位标志。