![](/img/trans.png)
[英]Android: Activity.onDestroy() is not called when Dalvik kills this Activity
[英]Activity.onDestroy being called on every back button push
我正在測試開發中的android應用。
它包含一個MainActivity
通過測試,我注意到每次按下后退按鈕時都會調用onDestroy。
我認為這很奇怪。 因此,我使用android studio創建了一個全新的空活動應用程序,並且未添加任何代碼。 只是一個簡單的世界。
即使在這個hello world應用程序中,每次我按下時都會調用onDestroy。
我正在運行三星S4,但我沒有理由相信它資源匱乏。 這里發生了什么?
我嘗試將android:launchMode設置為AndroidManifest.xml中的所有可用值,但沒有一個起作用。
每當您按下返回按鈕,即android默認行為,活動就會被破壞。 這就是代碼流動的方式。 在活動中覆蓋onBackPressed
/**
* called when user press back button on device
*/
@Override
public void onBackPressed() {
super.onBackPressed();
}
進入位於FragmentActivity內的onBackPressed,它表明它將首先從活動中彈出所有片段,然后將完成活動。
/**
* Take care of popping the fragment back stack or finishing the activity
* as appropriate.
*/
public void onBackPressed() {
if (!mFragments.getSupportFragmentManager().popBackStackImmediate()) {
supportFinishAfterTransition();
}
}
按下后退按鈕后,調用OnDestroy()是正常現象。 這是Android Activity生命周期的標准部分。 您可以在此處閱讀有關生命周期的信息: https : //developer.android.com/guide/components/activities/activity-lifecycle.html
我不建議像jitesh所建議的那樣覆蓋后退按鈕的行為,除非您有充分的理由。 一旦按下后退按鈕,用戶將期望您的應用程序被“關閉”(銷毀)。
如果您不想在每次單擊“后退”按鈕時都不調用OnDestroy():
@Override
public void onBackPressed() {
// super.onBackPressed(); // remove this line
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.