LauncherMode

1, android中,以Task为中心来管理Activity,Acitivity在Task中以栈的形式保存。

2, Activity的加载方式有以下几种:分别通过测试来验证。

准备:

创建:

MainActivity:Button:ToSecond跳转至SecondActivity

SecondActivity:Button:ToThis跳至至本身即SecondActivity,Button:ToThird跳至ThirdActivity

ThirdActivity,Button:BackSecond跳回SecondActivity

重写(override):

Activity的onCreate()方法和ondestroy()方法

添加:Log

运行此android项目:初始页为下图:

安卓加载模式(Android LauncherMode)_第1张图片

安卓加载模式(Android LauncherMode)_第2张图片

安卓加载模式(Android LauncherMode)_第3张图片

a) LauncherMode:stardard:(即默认Activity加载模式)

为清晰起见,可以先注释掉ondestroy()方法

打开配置文件:AndroidManifest.xml文件,如下图,添加LauncherMode配置文件

clip_image008

Step1:点击Button:ToSecond:(新创建)

clip_image010

Step2:点击Button:ToThis(增加)

clip_image012

Step3:点击Button:ToThird(无增加)

Step4:点击Button:BackSeocnd(增加)

clip_image014

总计创建3次,显然这对于系统是一种很大的浪费。

b) LauncherMode:singletop

同样的位置,修改LauncherMode:singletop 特点:如果它在栈顶,则它不新创建

为看清楚清除的效果,添加ondestroy()方法,同样的方法处理ThirdActivity,重写onCreate(),onDestroy()并添加Log

Step1:点击Button:ToSecond:(创建Second)

clip_image016

Step2:点击Button:ToThis(无增加),因为Second在栈顶

clip_image018

Step3:点击Button:ToThird(无增加)

clip_image020

此时Task栈中的activity排列如下图:左图:

安卓加载模式(Android LauncherMode)_第4张图片

Step4:点击Button:BackSeocnd(增加)

见上右图,栈顶为Third,故创建Second

clip_image024

c) LauncherMode:singletask::只要栈中有就不创建,并且当加载r singletask Activity时,会destroy其上的activity。

Step1:点击Button:ToSecond:(创建Second)

clip_image026

Step2:点击Button:ToThis(无增加),因为栈中存在

clip_image028

Step3:点击Button:ToThird

Step4:点击Button:BackSeocnd(由c的图可知,Third被清除)

clip_image030

d) LauncherMode:singleinstance

此时只要全局(系统)中有此Activity,则不会创建,

修改配置文件中的launcher为singleinstance

此时,测试需要新建另外一个项目,由新项目(以项目1,项目2区别)跳至原项目Second。通过Action。

为了测试方便,新项目的icon不要使用默认:修改为其他照片,地址在配置文件的如下部位,配置icon即可:

clip_image032

项目2中使用隐式意图跳转:

clip_image034

Step1:安装项目2,运行即可,到达应用程序页面看所选图标是否有,即代表项目2是否安装成功

Step2:运行项目1,点击Button:ToSecond

clip_image036

Step3,返回桌面,点击项目2图标,进入,点击Button1,跳转至项目1启动Second。

clip_image038

没有新创建,故在全局中有,即不新创建