猿问

New Intent()使用Android启动新实例:launchMode

我的活动A与android:launchMode="singleTop"在清单。


如果我进入Activity B,C并且D那里有菜单快捷方式可以返回到我的应用程序根活动(A)。


代码如下:


Intent myIntent = new Intent(getBaseContext(), MainActivity.class);

startActivity(myIntent);

但是,它没有返回到A我现有的实例,MainActivity.class而是创建了一个新实例-> onCreate()而不是onNewIntent()。


这不是预期的行为,对吗?


杨魅力
浏览 678回答 3
3回答

慕丝7291255

这应该可以解决问题。<activity ... android:launchMode="singleTop" />创建启动应用程序的意图时:Intent intent= new Intent(context, YourActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);这是需要的。

慕慕森

最终对我真正起作用的是:Intent myIntent = new Intent(getBaseContext(), MainActivity.class);myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActivity(myIntent);

牧羊人nacy

从文档引用:“标准”和“ singleTop”模式在一个方面彼此不同:每次有新的“标准”活动意图时,都会创建该类的新实例以响应该意图。每个实例都处理一个意图。类似地,还可以创建“ singleTop”活动的新实例来处理新意图。但是,如果目标任务在其堆栈的顶部已经具有该活动的现有实例,则该实例将接收到新的意图(在onNewIntent()调用中);没有创建新实例。我不确定100%表示“已经在其堆栈顶部具有该活动的现有实例”是什么意思,但是您的活动可能不满足此条件。请问singleTask或singleInstance为你的工作?或者也许您可以尝试设置FLAG_ACTIVITY_SINGLE_TOP要创建的意图,以查看是否有所不同,尽管我认为不会。
随时随地看视频慕课网APP

相关分类

Android
我要回答