2013-10-30 59 views
0

我有一个Activity A开始Activity B(对话框主题),其中Activity A然后在后台可见,B在前台。Android:背景活动不可见

但是,当按主页按钮,然后再次返回到应用程序时,A不再可见 - 只有B。 B的onResume()叫,但不是A,这也许是应该的......在A

onDestroy()不被称为我可以看到。什么可能是这种行为的原因?

A被定义为singleInstance MAIN/LAUNCHER活动,并通过SettingsActivity.show开始B

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

您可以请发布您的代码。 –

+0

发布您的清单。问题是你使用launchMode'singeInstance'。你为什么用这个?它会产生比解决(通常)更多的问题。 –

回答

1

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

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

而且,onResume()在ActivityB上被调用,因为它被恢复(即:它在前台)。不在ActivityA上调用onResume(),因为该活动不在前台。 “恢复状态”中只有1次活动。所有其他活动都“暂停”。

+0

谢谢!将launchMode更改为'singleTop'(或者我应该甚至使用'normal'?),我不知道为什么它设置为singleInstance,因为我没有从头开发该应用程序。无论如何,这解决了我的问题! – Dan

0

也许速战速决适用于此处,加A.onResume()得到的onResume()的实现,也就是因为当你回来时,A不会从背景中恢复。

但是,这只是一个不错的办法