有没有办法告诉标准的启动模式活动关闭自己?

时间:2013-10-21 15:49:20

标签: android

我正在维护一个Android应用程序,它是制造过程的远程控制。主活动屏幕有一些按钮,用于启动其他活动屏幕来控制工厂设备,但主活动还有一个线程通过网络与PC通信,而PC本身可能启动或想要停止某些从属活动(它通过在主要活动中开始的线程来完成。

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

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

2 个答案:

答案 0 :(得分:3)

在您的下属活动中实施BroadcastReceiver并让父母在收到PC命令时发送broadcast。您可以为每个从属活动进行不同的广播。

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

答案 1 :(得分:0)

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

  

是否应从活动堆栈中删除活动   并在用户导航时完成(调用其finish()方法)   从它开始,它在屏幕上不再可见 - " true"如果它应该   完了,"假"如果不。默认值为" false"。价值   "真"意味着活动不会留下历史痕迹。它   将不会保留在任务的活动堆栈中,因此用户将会   不能回到它。

set into your intent的通讯记录为Intent.FLAG_ACTIVITY_NO_HISTORY

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

希望这会有所帮助