一、前沿:AndroID 中谈到启动模式,就离不开任务栈Task。AndroID中对Activty存储的管理与Task息息相关,以下为个人对Task与启动模式的小结。
二、Task谈到Activity的启动模式,就会涉及到数据结构中的栈,AndroID中的任务栈也称Task,使用栈结构进行实现,具有后进先出的特点,创建一个Activity时,会往Task中压入一个Actiivty,当Activity销毁时,又会从Task中将该Activity移除,Task顶部的Activity即为此时处于可交互状态的Activity(running状态)一个Task中可以存储多个app的Activity,一个App的Activity也可以存储在不同的Task中1、 taskAffinity除了launchMode可以用来调配Task,的另一属性taskAffinity,也是常常被使用。taskAffinity,是一种物以类聚的思想,它倾向于将taskAffinity属性相同的Activity,扔进同一个Task中。TaskAffinity特点如下:1、TaskAffinity参数标识着Activity所需要任务栈的名称,默认情况下,一个应用中所有的Activity所需要的任务栈名称都为改应用的包名。2、taskAffinity的约束力弱于launchMode,只有当中的allowTaskReparen ting设置为true,抑或是调用方将Intent的flag添加FLAG_ACTIVITY_NEW_TASK属性时才会生效,在其他情况下没有实际意义3、TaskAffinity属性的值不能与当前应用包名相同,否则其值跟没有差不多
三、清除Task的三种模式1、androID:clearTaskOnLaunch这个属性用来标记是否从task清除除根Activity之外的所有的Activity,“true”表示清除,“false”表示不清除,默认为“false”。这里有点我们必须要注意的,这个属性只对任务栈内的root Activity起作用,任务栈内其他的Activity都会被忽略。如果androID:clearTaskOnLaunch属性为“true”,每次我们重新进入这个应用时,我们只会看到根Activity,任务栈中的其他Activity都会被清除出栈。2、androID:finishOnTaskLaunchfinishOnTaskLaunch属性与clearTaskOnLaunch 有些类似,它们的区别是finishOnTaskLaunch是作用在自己身上(把自己移除任务栈,不影响别的Activity),而clearTaskOnLaunch则是作用在别人身上(把别的Activity移除任务栈)如果我们把Activity的androID:finishOnTaskLaunch属性值设置为true时,离开这个Activity所依赖的任务栈后,当我们重新返回时,该Activity将会被finish掉,而且其他Activity不会受到影响。3、androID:alwaysRetainTaskState如果当前Activity的androID:alwaysRetainTaskState设置为true时,那么该Activity所在的任务栈将不会受到任何清理命令的影响,一直保持当前任务栈的状态。
四、Activity的四种启动模式1、standard(默认):标准模式每次启动一个Activity,都会创建一个新的Activity压入Task中2、singletop:栈顶复用模式如果新启动的activity已经存在有对应类型的实例且处于栈顶,系统此时不会创建新的Activity,而是复用栈顶的activity实例,我们如何判断是被复用的呢?当被复用时,onNewIntent方法将会被回调。onCreate、onStart不会回调,因为我们的Activity已经时被创建并且启动了的,但是onResume还是会回调的哦3、singleTask:栈内复用模式该模式为Task栈内单例模式,task内该activity实例只会存在一个当启动的activity恰好处于top时,行为与singletop一样当启动activity,但此时该类型的Activity实例并不处于top,此时会将该activity实例顶部的activitys都从task中移除,然后将该activity置于top复用时同样会回调onNewIntent4、singleInstance:单Task单例模式此模式下,系统将为该模式的Activity创建一个单独的Task,并且该Activity独享该Task五、总结从上面的小结中我们可以看出,AndroID的四种启动模式的特充分利用了Task本身的特点,理解Task的工作方式更有利于我们理解AndroID的四种启动模式相关阅读知识点整理篇(二):Android中的任务栈Task与Activity启动模式的纠缠知识点整理篇(一):Android四大组件之Activity生命周期详解AnyProxy使用详解(持续更新)Android进阶面试题整理(持续更新)android开发判断app是否在前台运行小程序开发引导或登录页跳转tabbar主页面vscode下创建html文件快速生成模版代码Struts2与Spring整合.让Spring来管理actionRN学习之flexbox学习Android官方文档翻译学习(DataBindingLibrary) 总结
以上是内存溢出为你收集整理的知识点整理篇(二):Android中的任务栈Task与Activity启动模式的纠缠全部内容,希望文章能够帮你解决知识点整理篇(二):Android中的任务栈Task与Activity启动模式的纠缠所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)