2013-02-08 27 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

它工作吗?如果是这样 - 标记为答案。 –