新活动关闭时如何返回原始活动?

时间:2013-05-14 19:41:23

标签: android

我有一个应用程序用作工业流程的远程控制,有3个活动A,B和GraphicsActivity。 A是主要活动,B是另一个屏幕,具有用户可以访问的附加功能。

还有一个单独的独立类PCComms,它在自己的线程中运行,并处理与PC的通信,控制工业过程。每隔一段时间,PC就会向Android发送一个图像进行显示,PCComms将触发GraphicsActivity以将其显示给用户。用户点击一个按钮将其关闭。

这是问题:当用户关闭GraphicsActivity时,它总是返回A,即使用户当时在B中。

PCComms不是一个活动,只是一个泛型类,所以它需要一个活动上下文,所以我有一个上下文变量,可以通过显示图形时屏幕上的任何一个来更新:

Intent intent = new Intent(curContext, GraphicsActivity.class);
intent.putExtra("Caption", sGCaption);                                
curContext.startActivity(intent);

...我在调试器中确认curContext是B的上下文。 当GraphicsActivity启动时,B的 onPause()被调用,但当GraphicsActivty finish() es时,不会调用B的生命周期事件。

相关的清单条目。 。 。

<activity android:name="A"
   android:launchMode="singleTask"
   android:screenOrientation="portrait">
</activity>
<activity android:name="B"
   android:screenOrientation="portrait"
   android:launchMode="singleInstance">
</activity>
<activity android:name="GraphicsActivity"
   android:screenOrientation="portrait"
   android:launchMode="standard">
</activity>

因此,如果在打开GraphicsActivity时我在B中,那么在关闭GraphicsActivity时如何让它返回B?

提前致谢!

1 个答案:

答案 0 :(得分:2)

由于B是singleInstance,因此GraphicsActivity被放入A任务堆栈中,因此当您完成()时,您将返回A.您应该使B标准,并且每当您调用B时,您都可以使用FLAG_ACTIVITY_CLEAR_TOP。您还可以将GraphicsActivity设为singleInstance。