簡體   English   中英

如果App進程終止,捆綁包如何發送到onCreate?

[英]How is bundle sent to onCreate if App process killed?

在“活動生命周期”圖中,從“ onStop”到“已終止應用程序進程”再到“ onCreate”有一個箭頭。 我一直想知道,現在我將對片段進行一些簡短的討論。 如果整個應用程序進程被銷毀,onCreate如何從onStop接收捆綁軟件? 系統是否跟蹤已終止的應用程序及其活動包? 我認為這將是這樣做的方法,因為到那時,被終止的應用程序將被分配零內存。

另外,在“管理活動生命周期”>“啟動活動”頁面的最后一段中,“系統在所有情況下都已經調用過onPause()和onStop()之后調用了onDestroy()。這種情況並不是說內存不足,這使我認為箭頭永遠不應該從onStop轉到onCreate,因為“具有更高優先級的應用需要內存”,這是拼寫錯誤還是我讀錯了嗎? '因為“可殺死的”而讀錯了嗎? “通常情況下,活動生命周期中的移動如下:”圖表。

其中之一必須是錯誤的,要么是活動生命周期圖中的箭頭,要么是“在所有情況下,系統已經調用過onPause()和onStop()之后,系統調用onDestroy(),除了一個:...”語句。 希望我在上下文之外閱讀。

如果整個應用程序進程被銷毀,onCreate如何從onStop接收捆綁軟件?

只要onStop()Bundle無關,它就不會“從onStop接收捆綁”。 Bundle傳遞到onCreate()onRestoreInstanceState()包含把在前面的數據Bundle通過onSaveInstanceState() Bundle的內容跨進程邊界傳遞到核心OS進程,該進程管理未完成活動及其任務的狀態。 如果相關的內容將被傳遞回您的應用程序的全新流程。

系統是否跟蹤已終止的應用程序及其活動包?

操作系統跟蹤未完成的任務。 一段時間(自上次使用以來約30分鍾),它會跟蹤任務活動的實例狀態Bundle

系統在除一種情況以外的所有情況下都已經調用過onPause()和onStop()之后調用onDestroy()

在不調用onDestroy()情況下,有不止一種情況。 由於內存不足的情況而終止該過程可能會或可能不會導致調用onDestroy() ,具體取決於對系統RAM的迫切需求。

onCreate很可能在onStop()之后被調用。 您使用onSaveInstanceState()傳遞捆綁包,只要活動或片段暫停或停止,就會調用它。 假設您有活動,然后按回家。 OnStop和onSaveInstanceState都被調用。 在onSaveInstanceState中,您可以保存捆綁包以保存應用程序的狀態。 該應用隨后在后台停留了太長時間,因此被殺死。 然后,當您打開應用程序時,一旦重新創建,則將束從onSaveInstanceState傳遞到SavedInstanceState參數中的oncreate。 有關更多信息,請參閱官方文檔https://developer.android.com/training/basics/activity-lifecycle/recreating.html

暫無
暫無

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

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