1

我正在维护一个 Android 应用程序,它是制造过程的遥控器。主 Activity 屏幕有一些按钮可以启动其他 Activity 屏幕来控制工厂设备,但 Main Activity 也有一个线程通过网络与 PC 通信,PC 本身可能会启动或想要停止一些从属 Activity (它通过在主活动中启动的线程执行)。

这就是问题所在:从属活动都是标准启动模式,但在制造过程中,它们必须多次打开和关闭,有时这些关闭将从下属活动外部启动,例如,从与之对话的线程电脑。如何让我的任务的主要活动关闭它创建的标准启动模式活动,这样我最终不会产生大量重复的活动?

我无法将从属活动更改为 Singletask 或 SingleInstance,因为它们不支持 onActivityResult()。

4

2 回答 2

3

在您的从属活动中实现一个广播接收器,并让父活动在收到 PC 命令时发送广播。您可以对每个从属活动进行不同的广播。

在接收器中,您只需要做任何您想做的事情(例如调用 finish())。

于 2013-10-21T17:05:09.557 回答
0

我认为android:noHistory是您正在寻找的:

当用户离开它并且它在屏幕上不再可见时,是否应该从 Activity 堆栈中删除并完成(调用它的 finish() 方法) - 如果应该完成,则为“true”,如果应该完成,则为“false”如果不。默认值为“假”。“真”值意味着活动不会留下历史痕迹。它不会保留在任务的活动堆栈中,因此用户将无法返回它。

要设置到您的意图中的对应 java falt是Intent.FLAG_ACTIVITY_NO_HISTORY

Intent i = new Intent(...)
i.setFlag( Intent.FLAG_ACTIVITY_NO_HISTORY );

希望这可以帮助

于 2013-10-21T16:01:26.597 回答