簡體   English   中英

使用后退按鈕時,為什么在onResume()之后調用onDestroy()

[英]Why is onDestroy() called after onResume() when using back-button

當我開始我的android-activity時,首先調用onCreate() ,然后調用onResume()

當我按下后退按鈕返回主屏幕並再次點擊應用程序圖標時,首先調用onCreate() ,然后調用onResume()然后再調用onDestroy()

我的應用程序仍處於活動狀態,但由於onDestroy()將一些成員設置為null,因此執行某些操作會導致錯誤。

這是為什么?

更新:當我在按下后等待30秒后一切正常。 除了將一些變量設置為null和.interrupt()后台線程之外,我沒有在onDestroy中做任何重要事情。

我自己想出來了。 我對Activity理解是有缺陷的。 當然,Android在舊的 Activity實例上調用onDestroy(),這可能在構造新的實例幾秒鍾發生。

onDestroy被調用,因為默認情況下,按回鍵會導致您的活動調用finish() ,這會啟動銷毀調用onDestroy()的活動。

為了防止在活動被破壞的情況下采取某些行動,請執行以下操作:

if(!isFinishing()) {
   // do your action here
}

isFinishing是Activity的一種方法。

你在onDestroy()做了一些繁重的操作嗎? 我認為你的活動視圖被破壞了,但不是活動對象。 並且在實際銷毀上一個Activity對象之前,您點擊應用程序圖標。

我認為除了你所描述的內容之外還有一些東西。 Android不僅會阻止活動被破壞,還必須在主線程上發生。

症狀聽起來就像你有:

  • 服務執行冗長的HTTP或數據庫操作。 你確定沒有suxg的東西嗎?
  • 另一個線程(可能由AsyncTask管理?)調用同步方法

暫無
暫無

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

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