適配Android12時,偶然發(fā)現(xiàn)按返回鍵時,應(yīng)用不會執(zhí)行ondestroy方法,后來找了好久,終于找到問題所在了。
此問題為Android12的行為變更引起的,需要用戶去進(jìn)行適配。
按下“返回”按鈕時,不再結(jié)束根啟動器 activity
Android 12 更改了在按下“返回”按鈕時系統(tǒng)對為其任務(wù)根的啟動器 activity 的默認(rèn)處理方式。在以前的版本中,系統(tǒng)會在按下“返回”按鈕時結(jié)束這些 activity。在 Android 12 中,現(xiàn)在系統(tǒng)會將 activity 及其任務(wù)移到后臺,而不是結(jié)束 activity。當(dāng)使用主屏幕按鈕或手勢從應(yīng)用中導(dǎo)航出應(yīng)用時,新行為與當(dāng)前行為一致。
對于大多數(shù)應(yīng)用而言,此變更意味著使用“返回”按鈕退出應(yīng)用的用戶可以更快地從[溫狀態(tài)]恢復(fù)應(yīng)用,而不必從[冷狀態(tài)]完全重啟應(yīng)用。
建議您針對此變更測試您的應(yīng)用。如果您的應(yīng)用目前替換 [onBackPressed()]來處理返回導(dǎo)航并完成 Activity,請更新您的實現(xiàn)來調(diào)用 super.onBackPressed() 而不是finish Activity。調(diào)用 super.onBackPressed() 可在適當(dāng)時將 activity 及其任務(wù)移至后臺,并可為不同應(yīng)用中的用戶提供更一致的導(dǎo)航體驗。
另請注意,通常,我們建議您使用 AndroidX Activity API [提供自定義返回導(dǎo)航],而不是替換 onBackPressed()。如果沒有組件攔截系統(tǒng)按下“返回”按鈕,AndroidX Activity API 會自動遵循適當(dāng)?shù)南到y(tǒng)行為。
更多描述,可參考Google官網(wǎng)描述:
https://developer.android.google.cn/about/versions/12/behavior-changes-all#activity-lifecycle