-
Notifications
You must be signed in to change notification settings - Fork 192
Open
Description
bug描述:
VA中打开一个应用,然后在最近列表中移除它,再在va中重复打开它,就启动不了了。
目前分析的结果是这样:
最近应用列表移除会调用到AMS的removeTask,并且在里面执行kill进程。但是VA里面启动的进程被移除时,不会被AMS kill掉,这个在removeTask里走了特殊的path,Task相关数据结构被删除了。对比平行空间,通用启动的应用也没有被kill掉。因此 VAMS里的linkToDeath不会生效,ActivityStack.processDied不会被调用。
这个过程VA主进程没有得到通知,VA里再去通过 ActivityManager.moveTaskToFront启动应用是起不来的。AMS里相关数据结构没了。
VA当前缺失了对这种情况处理的代码。
一个思路:利用这个API ActivityManager.getRecentTasks ,VA里 每次luanch intent时,对去比较一下当前系统中存在的Task和VA内部维护的Task列表,如果找到,继续用VA ActivityStack里每次moveTaskFromFront逻辑。找不到说明出现了Task被干掉的情况,但是这时候如何启动client我就没啥思路了。
平行空间里也是利用了这个 getRecentTasks API。
测试代码: prife/VirtualApp@6d568ac
Metadata
Metadata
Assignees
Labels
No labels