Intent的使用的注意事项

一、前言

开发中常用的也就一两个,所以这里进行下开发中遇到的问题。

二、Intent的FLAG_ACTIVITY_CLEAR_TASK

有时候会有一种需求,在通知栏启动目标页面,目标页面处于可能存在也可能不存在的情况,还有单例的情况,基于此需要设置flag。基于此可能会写出以下代码

notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);  //设置这个参数

这种写法会导致一个问题,就是页面会被销毁再此进行创建,即使清单文件已经设置了单例模式,另外该方式也不是官方的指导写法,正确应该是

notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);  //设置这个参数

需要注意的是Intent.FLAG_ACTIVITY_CLEAR_TASK会清空掉页面栈中所有页面,然后再把要跳转的页面加入进去,需要和FLAG_ACTIVITY_NEW_TASK配合使用。一般情况下本人建议不要使用该标志。

三、Intent重定向

以下为重定向代码,上架google时候会被警告,应避免使用

val intent = getIntent()
setResult(101,intent)

四、参考链接

  1. intent.setFlag的参数 FLAG_ACTIVITY_CLEAR_TASK 说明
  2. 从Notification发通知跳转引发的几个问题
  3. getIntent() Extras always NULL
  4. Intent安全中的一点事儿
  5. 针对 Intent 重定向漏洞的修复方法
  6. Android Intent.FLAG_ACTIVITY_NEW_TASK的个人理解
  7. Android Intent.FLAG_NEW_TASK详解,包括其他的标记的一些解释
  8. Android TaskAffinity解析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值