2013-10-20 35 views
0

我需要調用活動來重新啓動孩子。也就是說,如果子活動已經存在,關閉它然後再次啓動它。並保持父母與孩子之間的歷史/關係。即當我按從我希望它去到父的孩子回到我需要使用哪種意圖標誌來重新啓動活動

CLEAR_TOP說,如果它已經存在

NEW_TASK聽起來這會使孩子活動的根源也不會重新啓動活動應用程序,它我不想

+0

描述很混亂。你想要達到什麼目的? – johntheripp3r

回答

0

用這個,對我的作品

Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
                  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
                   getApplicationContext().startActivity(intent); 
1

根據我的理解,你有3個要求:
1.爲c只有一個實例hild活動:
我不知道原因,但是如果你只是想確保當前任務頂部的子活動的單例,那麼singleTop是好的;否則你需要使用singleTask,但是子活動將在另一個任務的根目錄下創建。
2.如果孩子已經存在,關閉它然後重新啓動它:
對於singleTop和singleTask,如果已經有子活動的實例(對於singleTop,已經是當前任務頂部的實例),則意圖將交付給那個實例。您可以在onNewInstance()中重置您的活動狀態。這應該與創建一個新的效果相同。
3.當我從孩子按回我想要去父母:
對於singleTop,不需要再努力。
對於singleTask,你可以嘗試如果這個棘手的工作:如果子活動知道什麼是下一個要顯示的活動按回來,它可以通過調用onDestroy()中的startActivity()手動啓動父活動。

有關Android lauchMode的更多信息,請閱讀http://developer.android.com/guide/topics/manifest/activity-element.html#lmode