activity的四种启动模式

来源:互联网 发布:com域名注册局 编辑:程序博客网 时间:2024/06/06 21:00

                   activity的四种启动模式

        在开始学习之前,我们必须知道一些事情

          ①:我们平常所说的 task stack(任务栈),是针对于activity而言的

          ②:任务栈其实就是一个后进先出的链表,记录和维护了当前开启的activity。

                  一般情况下,退出一个activity,就是把这个activity从任务栈栈顶移除.

          ③:如果栈顶空了,任务栈将会被回收,应用程序关闭,但,注意!! -- 进程其实还是存在的,等待其他任务进 

                入该线程.

标准模式】  ---  一般情况

       标准模式也是默认模式,在没有指定打开方式的时候默认使用标准模式

        我们来做个程序实验一下,首先我们做两个activity

        界面如下图:

        

        

         在配置文件中配置启动模式

        

         这时,我们点击的顺序为:第二个activity-->第一个activity-->第一个activity

         此时在任务栈中的情况为

        

              我们点击模拟器/真机的返回键,依次出现的界面依次为:

               第一个activity(点击前)-->第一个activity(点击一次)-->第二个activity(第二次点击)

               -->第一个activity(第三次点击)-->返回应用程序界面(第四次点击)             

             总结:每发送一个请求都会打开一个相应的activity,即使它已经重复,但依然要打开新的activity


singleTop】  ---  特殊情况

    singleTOP,这种模式和标准模式的区别在于:当你发起一个开启activity的请求时,它会第一时间去任务栈的最顶端查找,如果你要打开的是activity和顶栈中的activity一致时,它不会再次开启,值得注意的是,只要你请求打开的不是顶栈中的activity它都会开启一个新的activity,不管它之前是否打开过,是否存在

        依然是上个案例中用到的例子,这次我们把启动模式设置为下图所示:

         

      此时我们打开应用,点击Bution的顺序为

      第二个activity --> 第一个activity --> 第一个activity

      那么,在任务栈中的为:

      

          当我们连续两次点击activity01时,它只会开启一个

         我们点击模拟器/真机的返回键,依次出现的界面依次为:

               第一个activity(点击前)-->第二个activity(第一次点击)

               -->第一个activity(第二次点击)-->返回应用程序界面(第三次点击)


 singleTask】  ---  特殊情况

     singleTask  ---  它的作用是,当你发送一个启动activity A的请求时,它会先去任务栈中去查找是否存在你要开启的activity A,如果有,清空这个任务栈中activity A上面的所有的activity,复用activity A

     现在我们把配置文件中的activity启动模式改为

     

  我们发布项目,然后打开app,点击Button的顺序为:

      第二个activity -->  第一个activity 

      那么此时在任务栈中的情况为:

     

        所以我们点击一次后退键即可退出程序


 singleInstance】  ---   极特殊

   singleInstance  ---  它是一种及其特殊的启动方式,使用该启动模式的activity将会独自创建一个任务栈,这个任务栈中只存放一个该activity的实例,根据用户点击的顺序对所有的任务栈进行排序

      也就是说:如果activity01被开启,把activity01所在的任务栈放在最前面,如果此时又开启了新的activity02,那么activity02所在任务栈会被放置在activity01前面

     

       我们来举个例子,现在我们把配置文件中activity的启动模式改为下图所示:

     

         那么,我们将项目部署下,打开app --- > 进入activity01界面

         点击进入第一个activity,我们发现页面并没有任何反应,而当我们点击进入第二个activity,此时应用的反应如同开启了一个新的app似的,很明显第一个activity的界面先是缩小,然后activity02出现。

        此时的任务栈中的情形如图:

       

             若我们再点击进入第一个activity,

            

          也就是说,你想看到谁,谁就被放在前方,好似插队一般,把刚点击的activity放在队伍的最前方

          不管点击几次Button我们只需要点击两次返回,即可关闭程序

         

            以上就是我对activity4种启动模式的理解,希望可以帮到你

            欢迎转载,请注明出处,谢谢

    

原创粉丝点击