2014-04-09 131 views
1

說我已經開始活動一個新的意圖(背景下,類)這就是中有敏感數據,在此意圖被破壞?特別是,在活動下面會getIntent()中什麼情況下一個的代碼返回完全相同的意圖什麼意圖生命週期?

  1. 按活動的任務對Android的任務管理器中點擊
  2. 應用程序圖標和活性重建,並帶到前

香港專業教育學院與我的應用程序試了一下,IAND我得到奇怪的結果。 ..通常它沒有得到相同的意圖,但有時它似乎它,所以我不知道最新怎麼回事,反正如果可以從任何上層選項返回如何避免它?

我覺得一個Intent的生命週期一目瞭然將是有益的,如果任何文件的ANY1知道對此...

+0

只要A是在存儲器中,它會保持傳遞給它的意圖值 – mangusta

回答

1

說,我已經開始用新的意圖(背景下,類)活性的我這有敏感數據,它的意圖何時被破壞?

只要有對象/類持有對您的Intent對象的引用 - 它不會被垃圾收集。活動(活動A)持有參考啓動它的意圖,所以只要Activity一個對象不是垃圾收集 - 那麼i也不會被垃圾收集。

重要評論:onDestroy()活動回調和類distractor是不同的事情!

以下哪些情況下getIntent()中的getIntent()返回完全相同的intent i?在活動的任務對Android的任務管理器

1)按:

如果活動是在反應備份按鈕導航先前停止

假設你不是在呼喚setIntent()明確或者有人明確地呼籲finish(),那麼活動通過onDestroy()回調。在這種情況下 - 按下最近任務管理器中的「應用程序」將重新創建一個新的意圖從頭開始,因此 - getIntent()會帶來這個新的意圖,不包含您的額外或其他重載。 (其活動通過主頁按鈕或其他活動發送到後臺):當您從最近的任務中啓動它時 - 它將是您通過它的原始附加內容的意圖對象之前...被點擊

2)應用程序圖標和活性重建,並帶到 前

基本上我提到的(1)適用於式(2),基本上這取決於相同的情況下對兩兩件事:

  • intent flags您正在使用的具體發射是在意圖超載時會自動創建啓動您的活動。

  • launch mode以及您用於啓動自己的活動的意圖過載的活動標誌。

假設不使用任何上述的,並且正在使用正常良好的功能啓動器應用 - 的行爲將是完全按照我中說明(1)