We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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
The text was updated successfully, but these errors were encountered:
思路:VA首次启动应用时,会利用StubProvider来创建一个新桩进程。对于bug描述中的这种情况,不需要重新创建进程,也就省掉了fetchFreeStub的操作。只需走后续的startActivity流程。 修复:prife/VirtualApp@0802d20 测试:达到预期效果
Sorry, something went wrong.
No branches or pull requests
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
The text was updated successfully, but these errors were encountered: