-1

我有一个Activity A启动Activity B(对话框主题),然后在背景和前景中Activity A可见。B

但是,当按下主页按钮然后再次返回应用程序时,A不再可见 - 仅BonResume()of B 被调用,但不是 of A,这可能是它应该是的......

onDestroy()A如我所见,in没有被调用。这种行为的原因可能是什么?

A定义为 singleInstance MAIN/LAUNCHER Activity 并 B通过 SettingsActivity.show 开始:

public static void show(final Context context, final boolean inRegisterFlow) {
    final Intent intent = new Intent(context, SettingsActivity.class);
    context.startActivity(intent);
}
4

2 回答 2

1

问题是您使用launchMode="singleInstance'. 如果 ActivityA 是用 定义的launchMode="singleInstance",那么当 ActivityA 启动 ActivityB 时,ActivityB 会以不同的任务结束。当用户按下 BACK 按钮时,两个任务(包含 ActivityA 的任务和包含 ActivityB 的任务)都会在后台结束。当用户将包含的任务ActivityB带到前台时,另一个任务(包含 ActivityA)仍在后台。

你的架构听起来很糟糕。如果你想让它表现得像一个对话框,你为什么要启动一个以对话框为主题的活动?为什么不在 ActivityA 中显示一个对话框?你为什么用launchMode="singleInstance"?一般来说,这是错误的(除非您正在开发主屏幕替代品),而且它通常会产生比它解决的问题更多的问题,因为大多数开发人员并不真正了解它是如何工作的。

此外,onResume()在 ActivityB 上调用,因为它已恢复(即:它在前台)。onResume()未在 ActivityA 上调用,因为该活动不在前台。只有 1 个活动处于“恢复状态”。所有其他活动都“暂停”。

于 2013-10-30T11:48:58.007 回答
0

也许在这里应用一个快速修复,将 A.onResume() 添加为 onResume() 实现,这是因为当你回来时,A 不会恢复,因为它在后台。

但这只是一个糟糕的方法

于 2013-10-30T10:22:21.693 回答