Activity启动方式的总结(1)
来源:互联网 发布:如何用java做网站 编辑:程序博客网 时间:2024/04/30 01:08
下雨下的好糟糕,有时候真TM孤单,最近飞蚊症加重了,心态好爆炸.
任务栈
首先先了解一下任务栈是什么东西。
1.所谓栈:限制了里面的内容只能pop或者push。
2.任务栈是用来提升用户体验而设计的,它是一些Activity的组合,为了让用户完成一些工作或操作:
什么时候创建Task?
启动一个应用,系统就会为之创建一个task,来放置根Activity;
Activity所需的任务栈的名字是什么?
默认情况下,所有Activity所需的任务栈的名字为应用的package name
栈内的Activity都是同一个进程的吗?
栈内的activity可以来自不同的app,因此可以是运行在不同的进程,但是它们都属于同一个task内。
默认情况下,一个Activity启动另一个Activity(包括其他应用中的Activity)时,两个Activity是放置在同一个task中的,后者被压入前者所在的task栈,当用户按下后退键,后者从task被弹出,前者又显示在幕前。
任务栈的分类:
任务栈分为:前台任务栈和后台任务栈。
如果一个任务栈被移动到了后台,任务栈中的Activity都处于暂停状态。并且会保留每一个activity的状态,不丢失它们状态信息。
安卓系统是实时多task系统,用户可以随意在多个task之间切换。当一个task的栈内所有activity都pop之后,task也就销毁了。有时系统为了回收内存,会销毁activity,但是task不会销毁。
关键词–TaskAffinity
1.TaskAffinity对于Activity来说就好像它的身份证一样,可以告诉所在的task,自己属于这个task中的一员;
2.拥有相同affinity的多个Activity理论同属于一个task.
3.task自身的affinity决定于根Activity的affinity值。
4.默认情况下,一个应用内的所有Activity都具有相同的affinity,都是从Application(参考的taskAffinity属性)继承而来,而Application默认的affinity是中的包名,我们也可以为设置taskAffinity属性值。
<application android:name="Browser" android:label="@string/application_name" android:taskAffinity="android.task.browser" >
5.我们可以为每个Activity单独设定TaskAffinity,但是这个属性值不能和应用所在的包名相同,因为默认就是应用的package name。(-.-!)
affinity在什么场合应用呢?
TaskAffinity主要和:
1.singleTask或者FLAG_ACTIVITY_NEW_TASK标记,
2.allowTaskReparenting属性配合工作(重新为Activity选择宿主task)
两种场景的区别:
如果TaskAffinity和singleTask配合使用:
根据affinity查找或创建一个新的具有对应 该启动模式Activity的affinity的task。
如果TaskAffinity和allowTaskReparenting配合使用:
忘了一点:怎么看栈的情况:
adb shell dumpsys activity
参考:
http://blog.piasy.com/2016/03/19/Android-Task-And-Back-Stack/?utm_source=tuicool&utm_medium=referral
http://www.cnblogs.com/CSU-PL/p/3794280.html
- Activity启动方式的总结(1)
- Activity启动另一个Activity的方式总结
- activity的启动方式及其参数总结
- Activity启动方式的总结(2)
- Activity启动方式的总结(3)
- Activity的启动方式
- Activity的启动方式
- Activity的启动方式
- Activity的启动方式
- 启动另一个应用程序中的Activity的方式总结
- Activity启动方式的总结(4)-Activity隐式启动时候IntentFilter的匹配规则
- Android Activity的启动方式
- 启动另一个Activity的方式
- Android 启动Activity的方式
- Android Activity的启动方式
- Activity的四大启动方式
- Activity启动另一个Activity的方式
- Activity的启动模式总结
- 分布式系统(二)——分布式集群计算平台
- 如何用天天模拟器做调试
- PHP自定义错误
- IOS开发之UI初级篇—动画设置
- 我的浏览器收藏夹清单,经常访问的网站(200多个)
- Activity启动方式的总结(1)
- SpringMVC静态资源处理
- 关于比较CompareTo的用法
- POJ 3714 Raid
- AngularJS浏览缩放图片
- SQL注入
- DebugView
- TCP /IP 协议- (网络层)ARP、 RARP、ICMP、IGMP协议
- Windows——Vmware 12安装Ghost XP