Android 11 singleInstance退到桌面从桌面点击应用图标又从主页面重新启动的问题

Posted 会飞的京鱼儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 11 singleInstance退到桌面从桌面点击应用图标又从主页面重新启动的问题相关的知识,希望对你有一定的参考价值。

        公司项目中音视频通话页面小窗功能:

        当按home键退到桌面后,应用启动小窗,页面退到后台,保持继续通话。

        测试人员报告出现的问题:

        在通话页面按下home键再打开app会像新打开app那样启动,然后再次按下home键电话自动挂断。

        调试过程:

        我的通话页面启动模式是singleInstance,在通话页面按下home键,之前启动的页面全部销魂了,也就是走了onDestroy,再次点app启动标,Main相关页面重新onCreate,再次按下home键,通话页面也就走了onDestroy,然后自动挂断。再次按下home键再打开app Main相关页面没有重启。

        解决过程:

        大家都知道singleInstance启动的Activity是在新的栈中打开的,为什么会被清掉呢,之前android 10及以下从没遇到过,公司刚好有两个机器是Android 11 拿来一试都是必现的,因此我猜想Android 11上与以往的版本有不一样的地方。难道Android 11的singleInstance 没有创建新的栈,经过测试,发现栈还是有新建,只不过是按下Home键,系统会销毁最近没有活动的栈,也就是按下Home键时最新显示Activity的所在的栈不会被销毁,而是清除其他的栈。经过查看配置文件通话页面没有设置taskAffinity属性,抱着试试看的态度,设置了之后发现问题得到解决。

        猜想与结论:

        因为不设置taskAffinity的Activity默认和Application是相同的,如果不设置的话,按下home键时系统会清理最近不活动的和application相同的taskAffinity的所有栈,设置taskAffinity之后的Activity所在的栈就不会被清理

        目前还不知道具体原因,接下来我会单独研究一番到时与大家分享,也欢迎各位小伙伴一起探讨为什么会出现我所得出结论的原因,知道的同学也可以在下方评论说出来

以上是关于Android 11 singleInstance退到桌面从桌面点击应用图标又从主页面重新启动的问题的主要内容,如果未能解决你的问题,请参考以下文章

Android启动模式之singleinstance的坑

android launchmode singleinstance问题

Android singleTask 还是 singleInstance 启动模式? [关闭]

Android关于Task的一些实践之SingleTask, SingleInstance和TaskAffinity

android launchMode加载模式和intent flag

activity启动模式之singleInstance