簡體   English   中英

按下主頁按鈕時活動被破壞

[英]Activity is getting destroyed while pressing the home button

在我的應用程序中,當我按下主頁按鈕時,活動將轉到onDestroy() 它假設只被調用onPause()方法對嗎?

為什么會這樣?

還要檢查您的清單中是否沒有為 Activity 使用 android:noHistory 標志

文檔:android:noHistory 當用戶離開它並且它在屏幕上不再可見時,是否應該從活動堆棧中刪除該活動並完成(調用它的 finish() 方法)

這取決於你的手機有多少內存,如果你的手機沒有太多內存,那么它會立即破壞活動以釋放資源。 在新手機上,這不會發生,因為它們有足夠的備用內存。

如果系統受到限制並確定需要釋放一些資源,則您的活動可能會在按下主頁按鈕時被破壞。 文檔指出,在以下情況下可以調用onDestroy()

這可能是因為活動正在完成(有人在其上調用了 finish() ,或者因為系統暫時銷毀了該活動的實例以節省空間)。您可以使用 isFinishing() 方法區分這兩種情況。

此外,做筆記,該系統可以kill你的程序,而無需調用onDestroy()onStop()被調用。 因此,任何清理/數據持久性代碼都應該在onPause()onStop()

嗯,這取決於很多因素。 如果您在 Android 3.2+ 設備上遇到此問題,您應該將 screenSize 屬性添加到 android:configChanges

    android:configChanges="keyboardHidden|orientation|screenSize"

此外,還將 android:launchMode="singleTop" 添加到您的啟動器活動中。 請注意,您需要使用 Android SDK 15 或更高版本作為目標,但是,您的應用程序也可以在舊設備上運行。 希望這可以幫助。

要檢查的另一件事是您的活動是否在onPause()時調用了finish() onPause()

當然可能是內存問題,但在此之前檢查清單文件,在活動的聲明中,如果您聲明了“無歷史記錄”(您不希望活動保留在活動堆棧中。您也可以使用一些當您創建具有意圖的活動時標記。那么,最有可能的答案是 Alex Contour 給出的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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