簡體   English   中英

onActivityResult() 可以在 onCreate() 之前調用嗎?

[英]Can onActivityResult() be called before onCreate()?

理論上可以在onCreate () 之前調用onActivityResult()嗎? 我知道它可以在onResume()之前調用,但讓我們考慮一下這種極端情況:

  1. 活動 A 正在運行並啟動活動 B 以獲得結果
  2. 活動 B 打開
  3. 該設備在 memory 上運行不足,因此它破壞了活動 A
  4. 活動 B 以結果結束

現在會發生什么? 活動 A 是在收到結果之前重新創建,還是在onCreate()之前收到結果? 這是否保證每次都以相同的順序排列?

如果您打開應用程序掃描條形碼或拍攝照片或視頻,您通常會看到這一點。 您為此啟動的Activity需要大量資源,因此 Android 會殺死托管您的應用程序的操作系統進程。

當您啟動的Activity想要將結果返回給您的應用程序時,會發生以下情況:

  • Android 為您的應用程序創建一個新的操作系統進程(因為它殺死了您的應用程序並需要一個新進程)
  • Android 實例化Application實例(或您的應用程序的自定義實例)並在其上調用onCreate()
  • Android 實例化一個新的Activity實例,它將獲得結果(調用startActivityForResult()的那個)
  • Android 在新的Activity上調用onCreate() 在這種情況下,傳遞給onCreate()Bundle是最近用於保存Activity實例 state 的Bundle (來自onSaveInstanceState() )。
  • Android 在新Activity上調用onStart()
  • Android 在新Activity上調用onActivityResult()
  • Android 在新Activity上調用onResume()

那些案例使用

registerForActivityResult()

活動結果 API 將結果回調與代碼中您啟動其他活動的位置分離。 由於重新創建流程和活動時結果回調需要可用,因此每次創建活動時都必須無條件注冊回調,即使啟動其他活動的邏輯僅基於用戶輸入或其他業務邏輯發生

更多詳細信息請參閱從活動中獲取結果

暫無
暫無

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

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