【问题标题】:How to return to an activity closing the in between activities?如何返回关闭活动之间的活动?
【发布时间】:2020-03-04 10:08:55
【问题描述】:
我需要回到我的应用程序的主要活动,但为此,我需要关闭当前活动和主要活动之间的所有活动。
我试过这个:
Intent intent = new Intent(getActivity(), MainMenuActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity( intent );
问题是这样做,主要活动也关闭并重新打开,在主要命运活动中调用 onDestroy()。我需要回到它而不关闭并重新打开它。如何实现?
【问题讨论】:
标签:
android
android-intent
android-activity
activity-lifecycle
android-navigation
【解决方案1】:
FLAG_ACTIVITY_CLEAR_TOP 上的 documentation 表示
当前正在运行的实例 [...] 将在其 onNewIntent() 方法中接收您在此处启动的新意图,或者自行完成并以新意图重新启动。如果它已声明其启动模式为“多重”(默认)并且您没有在同一意图中设置 FLAG_ACTIVITY_SINGLE_TOP,那么它将完成并重新创建;对于所有其他启动模式,或者如果设置了 FLAG_ACTIVITY_SINGLE_TOP,则此 Intent 将被传递到当前实例的 onNewIntent()。
在您的情况下,我假设您的 MainMenuActivity 具有“多重”启动模式。由于您没有设置FLAG_ACTIVITY_SINGLE_TOP,所以设置完成并重新启动。
所以如果你使用
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|FLAG_ACTIVITY_SINGLE_TOP);
然后根据文档,MainMenuActivity 实例将保持其状态,onNewIntent() 将被调用。
注意:您可以使用setIntent() 将Intent 传递到onNewIntent() 中“Intent 的Activity@”
【解决方案2】:
您是否尝试将launchMode 设置为MainActivity。请注意,这应该针对特定Activity 内的所有交易进行。检查the options for from documentation。
关于如何启动活动的说明。有四个
与活动标志(FLAG_ACTIVITY_*
常量)在 Intent 对象中确定当
调用活动来处理意图。它们是:
"standard"
"singleTop"
"singleTask"
"singleInstance"