2013-05-14 96 views
2

我有一个应用程序用作工业过程的远程控制,有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 完成() 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> 

因此,如果我在B中打开GraphicsActivity时,如何在GraphicsActivity关闭时返回到B?

在此先感谢!

+0

从AndroidManifest.xml中发布相关部件,其中定义了A,B和GraphicsActivity。 – ozbek

+0

当你打开GraphicsActivity时,你是在销毁Activity B吗? – slhddn

+0

@akguncse B的onDestroy没有被调用,我无法想象为什么会这样。 – user316117

回答

2

由于B是singleInstance,GraphicsActivity被放在任务堆栈因此,当你完成(),然后再回到A.你应该让B标准,只要你拨打B可以使用FLAG_ACTIVITY_CLEAR_TOP。你也可以制作GraphicsActivity的singleInstance。

+0

一个有趣的问题。我以前没有听说过这样的stg。谢谢你的信息:) – slhddn

相关问题