2013-10-20 29 views
0

我需要调用活动来重新启动孩子。也就是说,如果子活动已经存在,关闭它然后再次启动它。并保持父母与孩子之间的历史/关系。即当我按从我希望它去到父的孩子回到我需要使用哪种意图标志来重新启动活动

CLEAR_TOP说,如果它已经存在

NEW_TASK听起来这会使孩子活动的根源也不会重新启动活动应用程序,它我不想

+0

描述很混乱。你想要达到什么目的? – johntheripp3r

回答

0

用这个,对我的作品

Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
                  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
                   getApplicationContext().startActivity(intent); 
1

根据我的理解,你有3个要求:
1.为c只有一个实例hild活动:
我不知道原因,但是如果你只是想确保当前任务顶部的子活动的单例,那么singleTop是好的;否则你需要使用singleTask,但是子活动将在另一个任务的根目录下创建。
2.如果孩子已经存在,关闭它然后重新启动它:
对于singleTop和singleTask,如果已经有子活动的实例(对于singleTop,已经是当前任务顶部的实例),则意图将交付给那个实例。您可以在onNewInstance()中重置您的活动状态。这应该与创建一个新的效果相同。
3.当我从孩子按回我想要去父母:
对于singleTop,不需要再努力。
对于singleTask,你可以尝试如果这个棘手的工作:如果子活动知道什么是下一个要显示的活动按回来,它可以通过调用onDestroy()中的startActivity()手动启动父活动。

有关Android lauchMode的更多信息,请阅读http://developer.android.com/guide/topics/manifest/activity-element.html#lmode