我有两组活动,假设每组3个活动,(A1,B1,C1 || A2,B2,C2)我从A1启动我的App,然后-> B1-> C1在这里我想从C1跳到->
A2在A2处,如果我按回去,它应该存在该应用程序,而不是退回给C1,然后从A2导航到-> B2-> C2。
因此,基本上我想更改启动的Activity,就像我在一个App中有两个App,而当我切换到第二个App时,我必须清除Activity
Stack。那可能吗?有任何想法吗?
在我看来,您已经回答了自己的问题。你写了:
因此,基本上我想更改启动的Activity,就像我在一个App中有两个App,而当我切换到第二个App时,我必须清除Activity Stack。
我会这样:
创建一个DispatcherActivity
启动应用程序时启动的活动。此活动是您任务的根源活动,并负责启动A1或A2,具体取决于…并且不finish()
对其自身进行调用(即:它将被A1或A2覆盖,但仍位于活动堆栈的根目录中)。
在中A1
,捕获“后退”键,并告诉DispatcherActivity这样退出:
@Override
public void onBackPressed() {
Intent intent = new Intent(this, DispatcherActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addExtra("exit", "true");
startActivity(intent);
}
这将清除任务堆栈,直到根活动(DispatcherActivity
),然后DispatcherActivity
根据此意图重新开始。
在中C1
,启动A2
,执行以下操作:
Intent intent = new Intent(this, DispatcherActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addExtra("A2", "true");
startActivity(intent);
这将清除任务堆栈,直到根活动(DispatcherActivity
),然后DispatcherActivity
根据此意图重新开始。
在中DispatcherActivity
,onCreate()
您需要根据意图中的额外内容来确定要做什么,如下所示:
Intent intent = getIntent();
if (intent.hasExtra("exit")) {
// User wants to exit
finish();
} else if (intent.hasExtra("A2")) {
// User wants to launch A2
Intent a2Intent = new Intent(this, A2.class);
startActivity(a2Intent);
} else {
// Default behaviour is to launch A1
Intent a1Intent = new Intent(this, A1.class);
startActivity(a1Intent);
}
在A2
,陷阱“返回”键,并告诉DispatcherActivity使用相同覆盖的退出onBackPressed()
作为A1
。
注意:我只是输入此代码,所以我还没有编译它,所以它可能不是完美的。你的旅费可能会改变 ;-)
问题内容: 我已经阅读了有关使用此功能的几篇文章,但一定会丢失一些东西,因为它对我不起作用。我的活动A在清单中有launchmode =“ singleTop”。它以launchmode =“ singleInstance”启动活动B。活动B打开浏览器并接收并返回意图,这就是为什么它是singleInstance的原因。我试图覆盖“后退”按钮,以便将用户发送回活动A,然后可以按“上一步”离开活动,
好吧,所以我有点困惑该怎么处理这个。因此,我有了主活动,从那里可以启动一个活动到DegreePlan活动,从那里可以启动另一个活动到EditDegreeplan。我已经将EditDegreeplan设置为在Android清单中没有历史记录。问题是在他们保存EditDegreeplan后,它会启动一个活动到Degreeplan。因此,如果用户按下后退键,他们必须按两次才能再次进入主活动。我想摆脱它,
举个例子, 我有活动 A、B、C、D A呼叫B 然后,B呼叫C 之后,C呼叫D 在活动D中,我调用。它将返回活动C。 我的问题是,在调用<code>finish() 不要建议在每次都调用 因为应用可以按回上一个活动以继续。
问题内容: 我正在尝试转储所有活动线程的列表,包括每个线程的当前堆栈。我可以使用threading.enumerate()获得所有线程的列表,但是我不知道从那里到堆栈的方法。 背景:Zope / Plone应用程序有时会出现故障,消耗100%的cpu,需要重新启动。我觉得这是一个循环,无法正常终止,但是我无法在test- environemt中重现该循环以进行验证。我设法注册了可以从外部触发的信号
我是Android编程新手。 我想了解如何为特定的Android应用程序维护活动堆栈,以及它如何根据用户导航进行更改。 例如,如果有多个活动,那么当用户单击“后退”按钮或“主页”按钮或启动新活动时,活动堆栈的行为如何? 我试图找到一个合适的职位,我可以得到所有的信息,但我没有得到任何。有人能建议我一些链接/帖子,我可以学习这个吗? 编辑: 到目前为止我遇到的链接/帖子: > onSaveInsta
我有很多活动。 A是列表活动。 B是表单活动。并动态生成。我连续开了两次这个活动。 我怎样才能像碎片一样管理活动。 *当我从第二个B返回时,第一个B应该打开*