Android activity 四个启动模式的作用与区别

今天来写一点Android中的很基础很重要,并且有些不太经常会用的知识,但是很重要当你需要解决一些特殊需求的时候。是关于Android activity 四个启动模式的作用与区别的,Android中activity有四种启动模式,分别是:
1.standard
2.singleTop
3.singleTask
4.singleInstance

它们之间的作用与区别在面试的时候经常会被问到,项目中在不同的需求时也会有用到,下面逐个讲解分别:

关于 statdard 模式是默认的一种启动模式,不需要配置launchMode。它每次通过intent跳转的时候都会创建新的actvity实例,会重复创建;

关于 singleTop 模式,就是如果你通过intent跳转的activity恰好在栈顶,就会直接复用这个activity实例,如果要创建的activity实例栈顶没有,即使往下数第二个就是也会重新创建,只因为它没有在栈顶,这就是栈顶唯一的内涵;

关于singleTask , 所有的Android应用在启动的时候都会创建一个任务栈,所有这个应用内被创建的activity都会放进这个栈内,launchMode设置为singleTask后,只要该activity实例被创建过,当再次需要创建的时候都会直接复用已经有的实例,而不会重新新建。

关于singleInstance ,整个Android系统中实例唯一,比如说谷歌地图的activity就会设置为这样的效果,所有的应用调用打开谷歌地图页面的时候都会复用一个activity实例而不会创建新的实例,这是因为当设置了singleInstance后,Android会在系统中为这个activity单独创建一个栈来存放该activity实例,当别的应用需要用的时候会直接复用已经有的唯一的一个实例。举个好明白的例子:在Windows程序中,多个窗口可以切换,但是你无法在自己程序中复用人的窗口。注意是直接复用人家的二进制代码,不是你拿到人家api后的源代码级调用。
Android可以做到,让别人的程序直接复用你的Activity(类似桌面程序的窗口)。这就是用singleInstance实现的。

刚开始学Android的时候对这个不是太重视,只有概念性的理解和记忆,但当在项目里面真正用到并解决实际问题的时候,才会有种Android开发初入精髓,或者是删繁就简,返璞归真的感觉!哈哈,也许这样说有点太言重了~

你可能感兴趣的:(android)