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之后,MainActivity所在后台栈就不会被清理

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

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值