适配Android12时,偶然发现按返回键时,应用不会执行ondestroy方法,后来找了好久,终于找到问题所在了。
此问题为Android12的行为变更引起的,需要用户去进行适配。
按下“返回”按钮时,不再结束根启动器 activity
Android 12 更改了在按下“返回”按钮时系统对为其任务根的启动器 activity 的默认处理方式。在以前的版本中,系统会在按下“返回”按钮时结束这些 activity。在 Android 12 中,现在系统会将 activity 及其任务移到后台,而不是结束 activity。当使用主屏幕按钮或手势从应用中导航出应用时,新行为与当前行为一致。
对于大多数应用而言,此变更意味着使用“返回”按钮退出应用的用户可以更快地从[温状态]恢复应用,而不必从[冷状态]完全重启应用。
建议您针对此变更测试您的应用。如果您的应用目前替换 [onBackPressed()
]来处理返回导航并完成 Activity
,请更新您的实现来调用 super.onBackPressed()
而不是finish Activity。调用 super.onBackPressed()
可在适当时将 activity 及其任务移至后台,并可为不同应用中的用户提供更一致的导航体验。
另请注意,通常,我们建议您使用 AndroidX Activity API [提供自定义返回导航],而不是替换 onBackPressed()
。如果没有组件拦截系统按下“返回”按钮,AndroidX Activity API 会自动遵循适当的系统行为。
更多描述,可参考Google官网描述:
https://developer.android.google.cn/about/versions/12/behavior-changes-all#activity-lifecycle