Android将一个application肢解为若干个activity,或者说,直接让编程人员从用户操作的角度去编写程序.本着软件工程可重用性原则,一个个的activity必然会发展为组件式的存在,也许不很严格.
那么,从另一个角度来说,一个组件也算是一个application,因为它也完成了一个功能.而实际上,在android中,也确实没有对application中activity的数量有所限制或者说规定.
于是,application似乎只是一个比较虚拟的存在,一个activity的集合罢了.
但是,注意到android的编程模型,是1app1进程1用户1JVM的.
也就是说,物理上还是存在着application的.
如果按照上面对application,即application只是一些activity的集合的话,那么架空application这层,或者说去除application这个概念可能更合适.
但如果去除的话,又使得1app1进程1用户1JVM的原则变得无意义了.
所以,application必须存在,必须保存一个应用是实际的独立个体.
但是,这样的话,activity的自由组合这个先天优势不是也丧失了么?
为此,就有了task的概念.
task实质是也是一个activity的集合或者称之为容器.只不过特殊在它是一个堆栈式的存在,一个activity call了另一个activity之后,就会将那个activity置于堆栈上层.
相对于application来说,task是一个比较动态的存在.
打个比方,application是一个exe,而task则是dll.
application在开始就定义好了所有的资源,而task的话,可以再允许的情况下调用其他东西.
某种程度上说,task是动态生成的application.
不同的task里的activity是由affinity来区别的.某种程度上来说,affinity是task的ID.注意到这个ID是可重定的.感觉Dev Guide的说法,这是由activity的allowTaskReparenting属性决定的.
顺便提一句,android的的开发倒是挺象web的.
activity在task中的表现,或者说加载方式主要有四种:
1.standard(the default mode)
2.singleTop
3.singleTask
4.singleInstance
值得一说的是,android对activity stack的处理让人想起了Erlang的一个思想,就是多线程环境下,如果不能很好地解决锁,那么就让锁消失.Erlang的作法是让没个变量都只能用一次,也就是说,每一次操作的变量其实都是新的.
在android中的task里,一般来说(standard mode),没一个intent发过来之后,都会产生一个新的activity来响应这个intent,就像Erlang一样.
而singleTop mode则是对standard mode的一个特殊处理,即,保持stack顶端的那个activity.也就是说,如果一个intent是由stack顶端的activity处理的话,将不会新建一个新的activity来处理,而是由原来的那个activity处理.
singleTask mode则是对于这个activity则会新建一个task.也就是说,对于这个activity,会分配一个新的affinity.
singleInstance mode则是保证这个activity唯一.这个对于1app1进程1用户1JVM模型来说,就像是引入了一个static变量.
既然对初始加载的过程有所规定,那么也就很自然地会有结束过程的一些规定.
类似垃圾回收,android对acitivity的退出机制也有一些设计.也是跟task有关,acitivity在退出的时候,必然会影响到task的stack,因此,android对acitivity的行为方式也做了规定.
1.alwaysRetainTaskState属性.保证stack不变.默认状态下,一个task长期不活动的话,会退化到root activity,也就是弹出stack,只保留底部的一个acitivity.
2.clearTaskOnLaunch属性.这个会在acitivity加载的时候清空task的stack.
3.finishOnTaskLaunch属性.某种程度上说这个属性保证了某项task是唯一的.因为当一个同类的task加载的时候,如果此属性为true,那么就会先退出之前的task,然后再加载这个task.
2009-07-03
Android入门笔记(2)
订阅:
博文评论 (Atom)
爽文
去看了好东西. 坦白说,多少是带着点挑刺的味道去的. 毕竟打着爱情神话和女性题材的气质,多多少少是热度为先了. 看完之后倒是有些新的想法. 某种程度上来说,现在的年轻人或者说声音就像小叶. 只要说点贴心的话就能哄好. 也是那种可以不用很努力了. 留在自己的舒适区避难所小圈子抱团就...
-
最近尝试了下海淘. 当然,方向上来说是从国内到新加坡. 先是买了个iPhone,算上运费和双重征税,到手比官方还是便宜个一两百新的. 换算回来也不多事10%的纯粹价格因素差异. 当然,之类有电商促销的因素. 也有比较基准是新加坡Apple Store售价的原因. 但如果同样比较A...
-
这两天看完了Netflix版的三体. 某种程度上来说,完成度还是不错的. 尽管开始的时候对于第一集片头有些争论,但整体如果带入当下去看的话,还是有些梗的. 比如三体对于地球科技的发展速率的担忧,由此衍生的智子. 以及现有力量对比上的压倒性优势. 如果带入中美关系以及各自的历史阶段...
-
前几天Sora出来后才仔细看了下diffusion,发觉确实算挺取巧的. 按照naive的intuition或者说不那么现代的方式的话,可能需要segmentaion为基础的composite的方式去生成图片,即使扯点deep learning/network的,可能也是类似一些...
没有评论:
发表评论