2013-05-09 85 views
0

我有一个问题想到活动管理。假设我有4个活动,例如A1,A2,A3,A4。现在A1有一个按钮开始活动A2。 A2有两个按钮可以启动A3或A4,A3有两个启动活动A4和A1的按钮。 A4有3个按钮来放置活动A1,A2,A3我不在这个活动中使用完成方法。那么现在用户点击任何一个按钮的活动都不是检查活动,这是否已经在背后?如果是,则该活动不会生成新的实例并且已经在后台中的开始活动。否则它会产生新的坚持。Android活动管理

+0

总之,我只是想知道这是活动已经在后台,如果它是..而不是如何让它带到前面.. – 2013-05-09 07:50:32

回答

5

您可以通过在您的Intent的标志中包括FLAG_ACTIVITY_REORDER_TO_FRONT,然后像平常一样调用startActivity(intent)来获得此行为。

+0

在这种情况下不会使用'FLAG_ACTIVITY_REORDER_TO_FRONT'更有意义?用户可以返回到现在启动活动顶部的其他活动。 – ozbek 2013-05-09 08:07:32

+0

@shoerat你说得对,我很困惑。对我来说这是凌晨:-)。您的评论在我已经修复之后进入。 – Barend 2013-05-09 08:08:21

+0

@Barend谢谢你的回答..目前你的回答很好。我执行后,我会接受它。 +1 ... – 2013-05-09 08:09:22

0

您可以搜索Google的“android:lunchMode”。 然后你会得到anwser。

+0

谢谢!!是否有可能在brif中解释它? – 2013-05-09 08:12:15

+0

如果您在AndroidManifest.xml中设置了android:lunchMode = singleTask,则活动堆栈中的活动将为Singleton。当你启动活动堆栈中的活动时,系统不会创建新的实例,它会将其放在堆栈的顶部。 – wlcw16 2013-05-09 08:58:20

0

无论何时在任何活动中单击按钮,它都会创建活动的新实例,而不管活动是否已在活动堆栈上。由于每次启动新的Intent,它都会打开新的活动。 当我们按回按钮时,只有它从堆栈中转到已经打开的活动。

+0

谢谢!!我知道这一点,但。如果彼此之间存在如此多的活动,那么它们可能已经在背后创建了。 – 2013-05-09 08:15:08

1

Intent intent = new Intent();

intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

startActivity(intent);