activity四种启动模式讲解

来源:互联网 发布:知乎 多功能料理机 编辑:程序博客网 时间:2024/05/22 06:32

      在android开发中activity的启动模式会经常用到,不过对于刚接触安卓的同学,可能会说我从来就没对activity的启动设置过,怎么就可以启动啊,其实不然,android在配置中其实是有默认启动方式的,也就是说开发中不设置,android系统都会给一种默认的启动方式。下面就具体详细介绍下,activity的四种启动方式。

                    四种启动方式分别是:standard ,singleTop、singleTask、singleInstance 接下来具体进行讲解:

 1.首先是standard (英文标准的意思)也是android默认的启动方式,先说下启动方式是在mainfest中android:launchMode=中设置,standard模式在每次从一个activity启动另一个activity(包括自身)都会生成一个新的实例,例如:从Activity1中的点击BUtton点击事件启动activity1(自身)。那么如果我点击按钮,便会新启一个Activity1叠在刚才的A1之上,一次点击会生成多个activity1的对象。因为activity是以栈的方式管理,所以点back键会依照栈顺序依次退出(栈遵循以先进后出的原则)。

2.第二种启动方式是 singleTop,该启动方式可以简单这样理解,activity都是以任务栈的形式管理,如果任务栈中已经有该activity实例并且在栈顶,那么就直接使用不需要再创建新的activity实例,如果任务栈中没有该实例(activity)或者是有该activity实例但不是在栈顶都需要重新创建activity实例。

3.第三种启动方式是singleTask如果在栈中已经有该activity的实例,再被启动的时候就不会再对该activity创建新的实例,只会调用该实例的onNewIntent()方法,重新回到栈顶在它上面的(activity)实例将会被移除栈,当然如果栈中不存在该activity实例就会创建新的实例。

4.第四种启动方式是singleInstance

简单点理解,singleInstance所标识的Activity,当被启动时,系统会首先判断系统其他栈中是否已经存在此Activity实例,有则直接使用,并且其所在的Activity栈理论上只有它一个Activity元素。所以启动它的Activity与它并不在一个task中,所以才需要特别注意Back的问题。一般表示为:task1 A -> task2 B。

singleInstance表示该Activity在系统范围内“实例唯一”。由此我们发现,singInstance和singleTask主要区别在与系统范围内的“实例唯一”还是当前Activity栈“实例唯一”。(第四种启动方式一直没有找到更简单易懂的语言去表述,在这引用corn的表述,在此谢谢仁兄

 


原创粉丝点击