我正在维护一个Android应用程序,它是制造过程的远程控制。主活动屏幕有一些按钮,用于启动其他活动屏幕来控制工厂设备,但主活动还有一个线程通过网络与PC通信,而PC本身可能启动或想要停止某些从属活动(它通过在主要活动中开始的线程来完成。
问题在于:从属活动都是标准启动模式,但在制造过程中,它们必须多次打开和关闭,有时这些关闭将从下级活动外部启动,例如,从线程开始与PC对话。如何让我的任务的主要活动关闭它创建的标准启动模式活动,这样我最终不会产生大量重复活动?
我无法将下级活动更改为Singletask或SingleInstance,因为它们不支持onActivityResult()。
答案 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 );
希望这会有所帮助