簡體   English   中英

是否有可能在Android中調用onCreate而不是onDestroy?

[英]Is that possible onCreate is called more than onDestroy in Android?

在Activity中,我在onCreate中注冊接收器並取消注冊onDestroy。 如果在下一個onCreate之后每個onCreate后跟onDestroy,它應該可以正常工作。 否則,如果onCreate的調用次數超過onDestroy,則接收器會多次注冊,並且應用程序會出現錯誤行為。

所以我的問題是:

  1. 可以嗎我在onCreate中注冊接收器並在onDestroy中取消注冊?
  2. 是onCreate在下一次onCreate之前總是跟着onDestroy嗎?

無法保證調用onDestroy:

http://developer.android.com/reference/android/app/Activity.html#onDestroy%28%29

protected void onDestroy()

在API級別1中添加在銷毀活動之前執行任何最終清理。 這可能是因為活動正在完成(有人稱為finish(),或者因為系統暫時銷毀此活動實例以節省空間。您可以使用isFinishing()方法區分這兩種情況。

注意:不要指望這種方法被稱為保存數據的地方! 例如,如果某個活動正在編輯內容提供程序中的數據,那么這些編輯應該在onPause()或onSaveInstanceState(Bundle)中提交,而不是在此處。 通常實現此方法是為了釋放與活動相關聯的線程之類的資源,以便在其應用程序的其余部分仍在運行時,被破壞的活動不會留下這些東西。 在某些情況下,系統會簡單地殺死活動的托管進程,而不會在其中調用此方法(或任何其他方法),因此它不應該用於執行在進程消失后保留的內容。

派生類必須調用超類的此方法的實現。 如果他們不這樣做,將拋出異常。

您可能還想查看此主題:

Activity OnDestroy從未調用過?

在銷毀活動時調用onDestroy。 或者從后台堆棧中刪除,當用戶不想要它或沒有可能的方法回到它。 當你的活動想要接收一個很好的廣播來做你自己的方式。 如果沒有出現對話框,或者收到通知或看到的東西也應該沒問題,如果你想要真正安全,並且一次只接收一個活動,並且只有在活動可見時才將這些移動到onResume和onPause。

你可能會有一些如何在另一個活動被帶到前面並重新注冊之后取消注冊?

暫無
暫無

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

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