2013-02-08 31 views
6

在應用程序中可以有許多活動,並且上次啓動的活動停留在堆棧頂部,並按下它完成當前活動。我有一系列活動,這裏是流程。完成特定活動的所有實例

如果我們有A,B,C(1),d,C(2)...活性C(1)和C(2)的活性的C兩個不同的實例,同時進行導航的應用程序中啓動。因此,必須清除所有活動C的實例,並且結果應該是在完成後我應該使用這些堆棧A,B,D。我該怎麼辦 。

IMP -I要保持C(1)在堆棧的生命,直到除非我完成C(2) ,因爲我可以有新的任務標誌開始是C而不是創建這些實例,但這些實例有不同的UI和工作。

以下方法並不有利。

首先

@Override 
public void onBackPressed(){ 
    super.onBackPressed(); 
    Intent intent = new Intent(C(2).this , D.class);  
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 
    startActivity(intent); 
} 

這將清除堆疊中的所有活動並重新啓動活動

請單例類活動的軌跡,然後重新發動所需流量,當有很多活動要開始時,這將如何消耗時間。

因此,我認爲,應該有使用軟件包管理器或一些其他的解決方案,將解決此問題,解決方案是值得讚賞

+0

你找到一個如何做到這一點? – Uma

回答

1

我不知道的方式來完成活動C2時手動C1關閉活動。

但是在它的上的簡歷,你可以照顧活動C1的這種方式 -

1 - 在你的應用類中設置一個標誌:

public static boolean IsClosingActivities = false; 

這個值可以通過C2被設置爲「真」恰好在活動C2的「完成」之前發生。

並在您將爲新活動C調用startActivity的位置設置「false」(假設活動C的新實例可以在應用程序中稍後創建)。

2 - 在C實現對簡歷:

@Override 
    protected void onResume() {  
     super.onResume(); 
     if (YourApplication.IsClosingActivities) { 
       this.finish(); 
     } 
    } 

這樣 - 當用戶從d向後導航 - C1將完成本身,他將被導航到B.

+0

我會試一試,讓你知道.. –

+0

我有類似的情況,手動做是唯一的方式,我發現。你可以在http:// stackoverflow中看到答案。com/questions/14499034/how-to-finish-an-activity-and-return-to-a-varied-location - 接受答案,如果它適合你:) –

+1

它工作嗎?如果是這樣 - 標記爲答案。 –