Android:后台活动不可见

时间:2013-10-30 10:13:56

标签: android android-activity activity-lifecycle

我有Activity A开始Activity B(对话主题),其中Activity A在后​​台可见,B在前景中可见。

然而,当按下主页按钮然后再次返回应用程序时,A不再可见 - 仅B。 B的onResume()被称为A,而不是onDestroy(),这可能就是它应该是......

A中的{p> A未被调用,因为我可以看到。这种行为可能是什么原因?

B被定义为singleInstance MAIN / LAUNCHER活动,并通过SettingsActivity.show开始public static void show(final Context context, final boolean inRegisterFlow) { final Intent intent = new Intent(context, SettingsActivity.class); context.startActivity(intent); }

{{1}}

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

也许快速解决方法适用于此处,将A.onResume()添加为onResume()实现,这是因为当你回来时A在后台不会恢复。

但这只是一种糟糕的方法