2013-03-05 56 views
1

我有2個活動(A和B),他們有2個按鈕可以在兩者之間進行切換。儘管使用FLAG_ACTIVITY_REORDER_TO_FRONT調用了onCreate

  1. 一個OnCreate中
  2. 乙的OnCreate
  3. 一個OnCreate中
  4. 一個的onResume

什麼我想做的事向B發送意圖一OnCreate中後不宜叫,但在這一點上它確實。爲了克服這一點,我找到了FLAG_ACTIVITY_REORDER_TO_FRONT(from here),並認爲它只能調用onresume,但它沒有。

+1

爲什麼不直接發送一個布爾內的布爾值到另一個活動。如果它是false,請不要在onCreate()中運行代碼。編輯:o nvm我想你想要的現有對象。 – 2013-03-05 12:46:47

+0

如果您的活動暫停,系統會調用'onCreate()'。 – 2013-03-05 12:50:55

+0

確實有很多替代方案,但我想學習邏輯。我的意思是什麼是爲flag_activity_reorder_to_front? – 2013-03-05 12:51:12

回答

1

FLAG_ACTIVITY_REORDER_TO_FRONT完全符合您的想法。但是,如果你開始ActivityA然後ActivityA開始ActivityB,並呼籲本身finish(),然後ActivityB開始ActivityA與具有FLAG_ACTIVITY_REORDER_TO_FRONT會有沒有ActivityA實例帶來正面的意向時。在這種情況下,Android將簡單地創建一個新的。我只能假設那是你所看到的。

+0

謝謝大衛,但完成()永遠不會被調用。我只需按回按鈕即可進入ActivityA。我無法理解的是,如果我通過主頁按鈕離開活動,它就是我想要做的。所以我想知道後退和主頁按鈕之間有什麼區別?如果你有一些時間,你能解釋一下嗎?另一個問題是onSaveInstanceState在按下home按鈕時會出現,爲什麼按下後退按鈕時會起作用? – 2013-03-06 08:16:07

+0

對不起,我還是不明白。如果您通過HOME按鈕離開活動,然後回來,它應該顯示您完全相同的活動。例如,如果屏幕上有ActivityA並按HOME按鈕,然後再次啓動應用程序,則應該看到ActivityA。請張貼您的清單,也許問題在那裏。 – 2013-03-06 08:27:33

+0

BACK按鈕用於完成活動並返回到任務活動堆棧中的上一個活動。HOME按鈕只是將整個任務堆棧推入後臺(它不會完成當前活動)。 – 2013-03-06 08:28:46

0

FLAG_ACTIVITY_REORDER_TO_FRONT更改活動歷史記錄。如果在先前訪問過的活動(在任務中)中找到請求的活動,則清除此活動的較早歷史記錄。所以,在按下按鈕的同時,用戶不會在任務中遇到此活動。

此標誌不會影響對onCreate()的調用,如果任務中沒有任何活動(未加載或銷燬),將調用onCreate()來創建它。

0

你不能只取消onCreate。如果B是全屏活動,則android可以終止A活動,並在您嘗試使用FLAG_ACTIVITY_REORDER_TO_FRONT標誌重新啓動它並將其稱爲onCreate方法時重新創建該活動。如果您嘗試將它放在前面時,活動A仍然在活動中,則不應調用onCreate方法。

也許在你的情況下,你應該嘗試使用片段?

相關問題