簡體   English   中英

每次按下后退按鈕都會調用Activity.onDestroy

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM