为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

杨魅力 2019-12-21 13:01:00
我的活动A与android:launchMode="singleTop"在清单。如果我进入Activity B,C并且D那里有菜单快捷方式可以返回到我的应用程序根活动(A)。代码如下:Intent myIntent = new Intent(getBaseContext(), MainActivity.class);startActivity(myIntent);但是,它没有返回到A我现有的实例,MainActivity.class而是创建了一个新实例-> onCreate()而不是onNewIntent()。这不是预期的行为,对吗?
查看完整描述

3 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

这应该可以解决问题。


<activity ... android:launchMode="singleTop" />

创建启动应用程序的意图时:


Intent intent= new Intent(context, YourActivity.class);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);

这是需要的。


查看完整回答
反对 回复 2019-12-21
?
慕慕森

TA贡献1856条经验 获得超17个赞

最终对我真正起作用的是:


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

myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(myIntent);


查看完整回答
反对 回复 2019-12-21
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

从文档引用:


“标准”和“ singleTop”模式在一个方面彼此不同:每次有新的“标准”活动意图时,都会创建该类的新实例以响应该意图。每个实例都处理一个意图。类似地,还可以创建“ singleTop”活动的新实例来处理新意图。但是,如果目标任务在其堆栈的顶部已经具有该活动的现有实例,则该实例将接收到新的意图(在onNewIntent()调用中);没有创建新实例。


我不确定100%表示“已经在其堆栈顶部具有该活动的现有实例”是什么意思,但是您的活动可能不满足此条件。


请问singleTask或singleInstance为你的工作?或者也许您可以尝试设置FLAG_ACTIVITY_SINGLE_TOP要创建的意图,以查看是否有所不同,尽管我认为不会。


查看完整回答
反对 回复 2019-12-21
  • 3 回答
  • 0 关注
  • 677 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信