如何返回关闭活动之间的活动?
Posted
技术标签:
【中文标题】如何返回关闭活动之间的活动?【英文标题】: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()。我需要回到它而不关闭并重新打开它。如何实现?
【问题讨论】:
【参考方案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"
【讨论】:
以上是关于如何返回关闭活动之间的活动?的主要内容,如果未能解决你的问题,请参考以下文章
Selenium WebDriver .getWindowHandles()返回先前关闭的窗口,如何区分这些窗口和活动窗口?
如果我关闭活动,从 BroadcastReceiver.onReceive 调用 peekService 将返回 null