应用程序中可以有很多活动,最后启动的活动保留在堆栈顶部,按下后它会完成当前活动。我有一系列活动,这是流程..
如果我们有 A,B,C(1),D,C(2)...活动 C(1) 和 C(2) 是在导航应用程序时启动的活动 C 的两个不同实例。因此,必需的是清除活动 C 的所有实例,结果应该是当我完成时C(2)我应该带着这些堆栈离开A,B,D。我应该怎么办 。
IMP-我想保留C(1)除非我完成 C(2),否则一直在堆栈中存活
因为我可以使用 New Task 标志启动 C,而不是创建这些实例,但这些实例具有不同的 UI 和工作方式。
以下方法并不有利。
First
@Override
public void onBackPressed(){
super.onBackPressed();
Intent intent = new Intent(C(2).this , D.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
startActivity(intent);
}
这将清除堆栈中的所有活动并重新启动活动
Second
在单例类中跟踪 Activity,然后重新启动所需的流程,但是当有很多 Activity 需要启动时,这会消耗时间。
所以我认为应该有一些使用包管理器或其他解决方案来解决问题,解决方案值得赞赏
我不知道在完成活动 C2 时手动关闭活动 C1 的方法。
但是,您可以通过这种方式处理恢复中的活动 C1 -
1 - 在您的应用程序类中设置一个标志:
public static boolean IsClosingActivities = false;
在活动 C2 发生“完成”之前,C2 可以将该值设置为“true”。
并在为新活动 C 调用 startActivity 的位置设置“false”。(假设稍后可以在应用程序中创建活动 C 的新实例)。
2 - 在简历上的 C 实现:
@Override
protected void onResume() {
super.onResume();
if (YourApplication.IsClosingActivities) {
this.finish();
}
}
这样,当用户从 D 导航回来时,C1 将自行完成并导航到 B。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)