2013-10-10 100 views
1

我正在嘗試使用AppCompat抽屜和多個頂級活動(不是片段)創建一個基本應用程序 - 我無法完全理解如何管理這個後臺堆棧 - 我試過了大約有一百種不同的方法 - 但它們都需要某種奇怪的破解來清除後臺 - 或者完成現有的活動。頂級安卓活動

我有3個活動 - A,B &下一個& B是頂層,C是B的孩子

我想:

  • 要開始一個活動時,應用程序啓動
  • 要退出應用程序時,我按從A
  • 後退按鈕以從抽屜
  • 啓動活動B要退出應用程序時,我按下返回按鈕來回M B
  • 要從活動B開始活動Ç
  • 要通過選擇抽屜按鈕回到活動B,當我選自C
  • 按下返回按鈕當我從A B或A或B選自C開始乙 - 我應該把頂級活動恢復到它的香草狀態。

我:

protected void startActivity(Class activity) { 
    final Intent intent = new Intent(this, activity); 
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    startActivity(intent); 
    overridePendingTransition(0, 0); 
} 

基本上我傳遞要麼ActivityA.class或ActivityB.class - 這種方法 - 按從B改回帶我到一個

使用HO_HISTORY,看起來確定 - 但從C後退退出應用程序

使用REORDER_TO_FRONT似乎沒有做任何事情?

使用面漆()startActivity工作後完美 - 除非你選擇A或B的兩倍(在這種情況下,你退出程序)

使用FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK以各種方式完美工作 - 除了超級討厭的屏幕在任務重新創建時閃爍。而性能命中...

幫助??

回答

1

剛剛在starActivity調用之後立即調用finish()函數嗎? (你必須刪除SINGLE_TOP標誌 - 否則你會遇到你從B - > B提到的行爲)

+0

非常多 - 雖然有Intent.FLAG_ACTIVITY_NEW_TASK,所以A&B重新開始而不是簡歷。 – Silver