2013-03-05 60 views
1

我有2个活动(A和B),他们有2个按钮可以在两者之间进行切换。尽管使用FLAG_ACTIVITY_REORDER_TO_FRONT调用了onCreate

  1. 一个OnCreate中
  2. 乙的OnCreate
  3. 一个OnCreate中
  4. 一个的onResume

什么我想做的事向B发送意图一OnCreate中后不宜叫,但在这一点上它确实。为了克服这一点,我找到了FLAG_ACTIVITY_REORDER_TO_FRONT(from here),并认为它只能调用onresume,但它没有。

+1

为什么不直接发送一个布尔内的布尔值到另一个活动。如果它是false,请不要在onCreate()中运行代码。编辑:o nvm我想你想要的现有对象。 – 2013-03-05 12:46:47

+0

如果您的活动暂停,系统会调用'onCreate()'。 – 2013-03-05 12:50:55

+0

确实有很多替代方案,但我想学习逻辑。我的意思是什么是为flag_activity_reorder_to_front? – 2013-03-05 12:51:12

回答

1

FLAG_ACTIVITY_REORDER_TO_FRONT完全符合您的想法。但是,如果你开始ActivityA然后ActivityA开始ActivityB,并呼吁本身finish(),然后ActivityB开始ActivityA与具有FLAG_ACTIVITY_REORDER_TO_FRONT会有没有ActivityA实例带来正面的意向时。在这种情况下,Android将简单地创建一个新的。我只能假设那是你所看到的。

+0

谢谢大卫,但完成()永远不会被调用。我只需按回按钮即可进入ActivityA。我无法理解的是,如果我通过主页按钮离开活动,它就是我想要做的。所以我想知道后退和主页按钮之间有什么区别?如果你有一些时间,你能解释一下吗?另一个问题是onSaveInstanceState在按下home按钮时会出现,为什么按下后退按钮时会起作用? – 2013-03-06 08:16:07

+0

对不起,我还是不明白。如果您通过HOME按钮离开活动,然后回来,它应该显示您完全相同的活动。例如,如果屏幕上有ActivityA并按HOME按钮,然后再次启动应用程序,则应该看到ActivityA。请张贴您的清单,也许问题在那里。 – 2013-03-06 08:27:33

+0

BACK按钮用于完成活动并返回到任务活动堆栈中的上一个活动。HOME按钮只是将整个任务堆栈推入后台(它不会完成当前活动)。 – 2013-03-06 08:28:46

0

FLAG_ACTIVITY_REORDER_TO_FRONT更改活动历史记录。如果在先前访问过的活动(在任务中)中找到请求的活动,则清除此活动的较早历史记录。所以,在按下按钮的同时,用户不会在任务中遇到此活动。

此标志不会影响对onCreate()的调用,如果任务中没有任何活动(未加载或销毁),将调用onCreate()来创建它。

0

你不能只取消onCreate。如果B是全屏活动,则android可以终止A活动,并在您尝试使用FLAG_ACTIVITY_REORDER_TO_FRONT标志重新启动它并将其称为onCreate方法时重新创建该活动。如果您尝试将它放在前面时,活动A仍然在活动中,则不应调用onCreate方法。

也许在你的情况下,你应该尝试使用片段?

相关问题