activity singleInstance问题处理

好久没来记录学习了,总是忙于各种事,后面有时间了,多上来写点东西,记录自己工作遇到的问题。

1 普及下知识

Activity启动方式有四种,分别是:
standard
singleTop
singleTask
singleInstance

设置Activity的启动模式,只需要在AndroidManifest.xml里对应的<activity>标签设置android:launchMode属性

standard 默认模式,可以不用写配置

其余三种模式,可以网上搜索,一大堆介绍。

2 遇到的问题

项目中有个登录账号的界面,登录完成后,需要finish掉该activity。问题是,该activity未设置启动模式,在主界面打开了该界面,然后点击home键,之后再进入其他应用中打开该activity,进行了登录操作后,登录成功后,关闭了当前输入账号的界面,但是却又显示了空白的登录界面。。。

对于这些操作,只能设置为singleInstance启动模式,但是问题又来了:打开该界面时Intent传过来一些值,在登录完成关闭界面时,需要根据这些值来确定是否需要打开另一个界面,使用了singleInstance模式,第二次打开的该界面的值就获取不到,getIntent().getExtras()始终是第一次的值。

3 解决方法

启动模式为singleInstance,第二次打开界面时,会走onNewIntent方法,代码如下

 protected void onNewIntent(Intent intent) {  
  super.onNewIntent(intent);
  Log.d(TAG, "onNewIntent");
  setIntent(intent);
   }

通过上面方法,可以更新Intent ,就可以拿到第二次打开该界面传过来的Intent内的值。

 

问题完满解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值