Intent.FLAG_ACTIVITY_NEW_TASK的作用
FLAG_ACTIVITY_NEW_TASK 比较标准解释如下:
首先会查找是否存在和被启动的Activity具有相同的亲和性的任务栈(即taskAffinity,注意同一个应用程序中的activity的亲和性相同),如果有,则直接把这个栈整体移动到前台,并保持栈中旧activity的顺序不变,然后被启动的Activity会被压入栈,如果没有,则新建一个栈来存放被启动的activity,注意,默认情况下同一个应用中的所有Activity拥有相同的关系(taskAffinity).
理解:当我们创建一个activity的时候,系统会为我们创建一个新的任务堆栈,并将我们创建的activity放到这个堆栈中,但是,我们启动的服务或者广播并不会放在这个堆栈中,因此,当我们在服务或者广播中启动一个activity的时候,(因为service根本不在任务堆栈中),因此我们需要给将要启动的activity指定一个堆栈,这个flag的作用是告诉系统查找是否存在和被启动的Activity具有相同的亲和性的任务栈,如果不存在,则新建一个栈来存放被启动的activity。
参考:
Intent.FLAG_ACTIVITY_NEW_TASK 理解
Android Intent.FLAG_NEW_TASK详解,包括其他的标记的一些解释
为什么有时候启动Activity需要加FLAG_ACTIVITY_NEW_TASK
云控、本地云控、默认云控
优先级: 云控>本地云控>默认云控
作用:
云控:请求服务器获取最新的数据
本地云控:当请求服务器失败的时候,读取本地云控,本地云控保存的是上一次请求服务器成功获得的数据
默认云控:当本地云控获取的数据为空时,使用默认云控的配置,其起到了兜底的作用。
网友评论