一、前言
开发中常用的也就一两个,所以这里进行下开发中遇到的问题。
二、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)