You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

锁屏下通过PendingIntent启动Activity致onStop()重复调用问题咨询

关于锁屏下PendingIntent启动Activity导致原Activity onStop()调用两次的问题

这其实是Android系统的预期行为,而非Bug,背后是锁屏状态下系统处理Activity启动的特殊逻辑在起作用,我来给你拆解下:

  • 当设备处于锁屏状态时,你通过PendingIntent启动新Activity的请求,会先被系统的锁屏相关组件(比如Keyguard对应的Activity)拦截。这个时候你的原Activity会被系统强制暂停并转入后台,触发第一次onStop()。
  • 随后系统会完成解锁流程(哪怕你用的是无密码锁屏,这个步骤也会执行),然后才会真正启动你指定的目标Activity。在这个过程中,原Activity会短暂地从后台回到前台,紧接着又被新启动的Activity覆盖,这就会触发第二次onStop()。

你可以做个小验证:在你的测试Activity里加上onStart()和onResume()的日志打印,会看到第一次onStop()之后,原Activity会快速触发onStart()甚至onResume(),然后立刻又进入onStop()状态——这就是两次调用的完整路径。

另外,如果你在非锁屏状态下重复这个测试,就不会出现两次onStop()的情况,这也能侧面证明这是锁屏场景下的特殊处理逻辑。

小建议

如果你的业务逻辑对onStop()的调用次数敏感,最好不要直接依赖这个方法的调用次数来做判断。可以通过isFinishing()或者isDestroyed()来区分Activity是真的要被销毁,还是只是暂时转入后台;或者把需要只执行一次的逻辑移到onPause()里处理,避免受这种特殊场景的影响。

内容的提问来源于stack exchange,提问作者Bek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:57:30