[Android教学区] 138. singleTask和singleInstance启动模式

来源:http://bbs.itcast.cn/thread-80202-1-1.html


将Crazy android书中代码实现了一遍,总结如下:

(1)书中SingleInstanceTest.java和SecondActivity属于同一个Project,假定为ProjectA,而OtherTest.java属于另外一个project,假定为ProjectB

(2)运行ProjectA, 打开singleInstance模式启动的SecondActivity后,再生成一个SingleInstanceTest的Activity。

(3)不用停止运行ProjectA,点击home键,再运行ProjectB,ProjectB使用隐身intent调用SecondActivity。

(4)结果ProjectA中SecondActivity会遮挡SingleInstanceTest的Activity显示在屏幕最前面。



Android Activity的启动模式有多种,我们已经学习过“singleTop”,“standard”这两种模式。下面我们将介绍另外两种启动模式“singleTask”和“singleInstance”。
单一任务模式
复制粘贴工程“10_activity启动模式singletop”,命名为“11_activity启动模式-singletask”。在清单文件中配置SecondActivity的启动模式为“singleTask”,代码如例1-1
1-1
  1.     android:name="com.itheima.taskstack.MainActivity"
  2.     android:label="@string/app_name" >
  3.    
  4.         
  5.         
  6.    

  7.     android:launchMode="singleTask"
  8.     >
复制代码
运行程序,此时任务栈创建,并将 MainActivity 01 入栈,效果如图 1-1 所示:
 
点击“开启界面02“按钮,打开SecondActivity即02入栈;然后点击”开启界面01“按钮即01再次入栈;接着点击” 开启界面01 “,则01又入栈;最后点击”开启界面02“,此时应用跳转到SecondActivity所在的页面,任务栈在这一过程中变化如下图1-2所示:
 
从图1-2可知:由于SecondActivity的启动模式为“singleTask“,故在任务栈中只能存在一个该Activity的入栈实例。当02入栈时,若任务栈中已经存在该任务实体,则复用该实体并使该实体处于栈顶。若要退出图1-2到系统桌面,此时我们只需要点击”BACK“按键两次。
单一实例模式
复制粘贴工程“10_activity启动模式-singletop”,命名为“12_activity启动模式-singleinstance”。在清单文件中配置SecondActivity的启动模式为“singleInstance”,代码如例1-2
1-2
  1.     android:name="com.itheima.taskstack.MainActivity"
  2.     android:label="@string/app_name" >
  3.    
  4.         
  5.         
  6.    

  7.     android:launchMode="singleInstance "
  8.     >
复制代码
运行程序,此时任务栈创建,并将MainActivity即01入栈,效果如图1-13所示:
 
点击“开启界面02“按钮,打开SecondActivity即02入栈;然后点击”开启界面01“按钮即01再次入栈;点击“Back”此时01出栈;再次点击“Back”此时01再次出栈,此时01所在的任务栈清空但02所在的任务栈仍存在。这一过程变化如下图1-4所示:

从图1-4可知:在点击“开启界面02”时,由于SecondActivity的启动模式为“singleInstance”,这种启动模式非常特殊,此时02会入栈到自己的任务栈中,02和01分别在不同的任务栈中;再次点击“开启界面01”按钮,则01再次入栈;点击“Back”则01出栈,再次点击“Back”则01再次出栈,此时01所在的任务栈清空,但02所在的任务栈仍存在。
总结
Activity有四种启动模式,下面是我们对这四种启动模式的总结,具体如下表1-1:
 
表1-1
配套文档与对应高清视频下载
http://pan.baidu.com/s/1qWLVGLI
在线视频



你可能感兴趣的:(Android应用)