我有一個初始活動O
和一個活動A
,其中我可以選擇去活動A1,A2,A3
並且例如在每個活動中填寫表單。所以,我沿着這條道路:如何在Android中管理活動實例
O> A> A1> A> A2> A> A3
雖然我在A3
我想按後退按鈕,再去O
但我必須從A的每個實例傳遞(假設我用finish()
或no history
在清單的A1,A2,A3
所以他們將不會出現在堆棧)
我怎麼可以聲明A
只會有一個實例(最後一個)在堆棧中,這樣如果我按下按鈕tw冰我會再次去O
?
我有一個初始活動O
和一個活動A
,其中我可以選擇去活動A1,A2,A3
並且例如在每個活動中填寫表單。所以,我沿着這條道路:如何在Android中管理活動實例
O> A> A1> A> A2> A> A3
雖然我在A3
我想按後退按鈕,再去O
但我必須從A的每個實例傳遞(假設我用finish()
或no history
在清單的A1,A2,A3
所以他們將不會出現在堆棧)
我怎麼可以聲明A
只會有一個實例(最後一個)在堆棧中,這樣如果我按下按鈕tw冰我會再次去O
?
@Override
public void onBackPressed() {
Intent intent = new Intent(this,O.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
雖然這個答案很好,但請嘗試解釋代碼的作用,以幫助其他/新用戶瞭解它的工作原理。大多數Android初學者都有理解「活動」和「任務」堆棧的問題。 – Bonatti
更改活動A
的launchMode
到singleTop
。由於它在文檔中指出:
如果活動的一個實例,在目標 任務的頂部已經存在,該系統的路線通過對 調用其onNewIntent()方法,而不是意圖到該實例比創建 活動的新實例。現在
,而不是從A -> A1 -> A
去,你可以finish()
活動A1
(或使用up button),這將返回到活動A
的實例。
每次活動「A」出現都是新實例?爲什麼不只有一個活動實例'A'並從其他活動中回到它呢? – Bryan
這是默認行爲。我怎樣才能讓它成爲單一實例?這就是問題... –
爲什麼你需要創建A的多個實例?你是否正在實施註銷功能? – Dilip