[英]Maintaining the Back Stack between Activities
我的問題是假設我們有4個活動。
A-> B-> C-> D
。 在活動C中,我傳遞了一個前往D的意圖,然后再次從D返回到C.從C中的D獲得所需的結果之后,我運行了一個異步任務,之后我必須回到B.現在當我在B處按BackBack(而不是A),活動變為
B-> C-> B-> A。
這肯定是一個重復的問題,但沒有得到我問題的正確答案。
將活動B,C,D的上下文存儲在這樣的靜態變量中
活動Cprivate static B bContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
clearAllTasks();
bContext=this;
}
private void clearAllTasks() {
if(D.dContext!=null)
D.dContext.finish();
if(C.cContext!=null)
C.cContext.finish();
if(B.bContext!=null)
B.bContext.finish();
}
在活動D和活動B中也做同樣的事情
private static B bContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_b); clearAllTasks(); bContext=this; } private void clearAllTasks() { if(D.dContext!=null) D.dContext.finish(); if(C.cContext!=null) C.cContext.finish(); if(B.bContext!=null) B.bContext.finish(); }
像這樣你可以清除你的棧,從活動B它將完成所有其他活動。
如果您要進入活動B而沒有從活動C或D調用意圖,則可以調用clearAllTasks();
在onResume()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.