套用连连看规则
玩过连连看吗?回顾下连连看的规则:
将相同花色的两个方块用三根以内的直线连在一起就可以消除。
为了有效管理activity,google在玩过连连看后,把该规则适当改进也套用到activity上了。下面我们就来具体试玩一下吧。
Activity的四种启动模式
模式一:standard
规则:叠放,不消除
速记成语:后来居上。
模式二:singletop
规则:叠放,相邻相同则消除,但保留并刷新下面的一个。
该规则下,你无法拼出“笔笔”,“果果”。
却可以拼出:“pen-pineapple-apple-pen”
应用举例:浏览器(Browser)的书签Activity(BrowserBookmarkPage)
配置成singleTop的Activity,不再会构造新的实例加入到Task栈中,而是将新来的Intent发送到栈顶Activity中,栈顶的Activity可以通过重载onNewIntent来处理新的Intent(对应图例中的刷新动作)
速记成语:形单影只
模式三:singletask
规则:叠放,任意间隔出现相同则消除区间内所有,但保留并刷新最下面的一个。
该模式你无法拼出“pen-pineapple-apple-pen”!
标志为singleTask的Activity,最多仅有一个实例存在,并且,位于以它为根的Task中。所有对该Activity的请求,都会跳到该Activity的Task中展开进行。
适用范围:构造成本很大,但切换成本较小的Activity
举例:浏览器应用的主Activity(名为Browser…)
速记成语:举世无双
模式四:singleinstance
规则:横放,不叠加,不重复
速记成语:各行其是
你还需要知道这些
1.“相同”的含义与taskAffinity属性
所谓“相同”,不仅指activity的名字相同,还包括它的taskAffinity属性。
Note:每个Activity都有taskAffinity属性,这个属性指出了它希望进入的Task。如果一个Activity没有显式的指明该 Activity的taskAffinity,那么它的这个属性就等于Application指明的taskAffinity,如果 Application也没有指明,那么该taskAffinity的值就等于包名。
2.“消除”的含义
所谓“消除”,本质上是出栈的动作。
配置成singleTop的Activity,不再会构造新的实例加入到Task栈中,而是将新来的Intent发送到栈顶Activity中,栈顶的Activity可以通过重载onNewIntent来处理新的Intent
3. 注意:栈顶的重复activity并没有创建出来。而图例中为了形象的表达,将重复的activity表现出来了。
本文为原创文章。可尽情点赞,留言和讨论。