我需要调用活动来重新启动孩子。也就是说,如果子活动已经存在,请关闭它然后再次启动它。并保持父母与子女之间的历史/关系。也就是说,当我从孩子那里按回来时,我想让它去父母那里
CLEAR_TOP表示如果活动已经存在,它将不会重新启动活动
NEW_TASK听起来会让孩子活动成为我不想要的应用程序的根
答案 0 :(得分:1)
根据我的理解,你有3个要求:
1。儿童活动只有一个例子:
我不知道原因,但如果你只想确保当前任务顶部的子活动单例,那么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
答案 1 :(得分: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);