黑马程序员安卓教程:singletask和singleinstance启动模式

黑马程序员安卓教程:singletask和singleinstance启动模式
黑马程序员安卓教程:singletask和singleinstance启动模式

singleTask和singleInstance启动模式

Android Activity的启动模式有多种,我们已经学习过“singleTop”,“standard”这两种模式。下面我们将介绍另外两种启动模式“singleTask”和“singleInstance”。

1.单一任务模式

复制粘贴工程“10_activity启动模式singletop”,命名为“11_activity启动模式-singletask”。在清单文件中配置SecondActivity的启动模式为“singleTask”,代码如例1-1

例1-1

运行程序,此时任务栈创建,并将MainActivity即01入栈,效果如图1-1所示:

01

图1-1所示

点击“开启界面02“按钮,打开SecondActivity即02入栈;然后点击”开启界面01“按钮即01再次入栈;接着点击”开启界面01 “,则01又入栈;最后点击”开启界面02 “,此时应用跳转到SecondActivity 所在的页面,任务栈在这一过程中变化如下图1-2所示:

图1-2所示

从图1-2可知:由于SecondActivity的启动模式为“singleTask“,故在任务栈中只能存在一个该Activity 的入栈实例。当02入栈时,若任务栈中已经存在该任务实体,则复用该实体并使该实体处于栈顶。若要退出图1-2到系统桌面,此时我们只需要点击”BACK“按键两次。

2.单一实例模式

复制粘贴工程“10_activity启动模式-singletop”,命名为“12_activity启动模式-singleinstance”。在清单文件中配置SecondActivity的启动模式为“singleInstance”,代码如例1-2

例1-2

运行程序,此时任务栈创建,并将MainActivity即01入栈,效果如图1-13所示:

01

图1-3所示

点击“开启界面02“按钮,打开SecondActivity即02入栈;然后点击”开启界面01“按钮即01再次入栈;点击“Back”此时01出栈;再次点击“Back”此时01再次出栈,此时01所在的任务栈清空但02所在的任务栈仍存在。这一过程变化如下图1-4所示:

图1-4所示

从图1-4可知:在点击“开启界面02”时,由于SecondActivity的启动模式为“singleInstance”,这种启动模式非常特殊,此时02会入栈到自己的任务栈中,02和01分别在不同的任务栈中;再次点击“开启界面01”按钮,则01再次入栈;点击“Back”则01出栈,再次点击“Back”则01再次出栈,此时01所在的任务栈清空,但02所在的任务栈仍存在。

3.总结

生一个新的

相关主题
相关文档
最新文档