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 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?

提前致谢!

4

1 回答 1

2

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

于 2013-05-14T19:54:42.043 回答