我有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}}
答案 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在后台不会恢复。
但这只是一种糟糕的方法