聊聊Android的四种启动模式
2018-04-03 17:34
225 查看
聊聊Android的四种启动模式
在说启动模式前先说一些名词:
栈的概念
栈(Stack)是一种常用的数据结构,栈只允许访问栈顶的元素,栈就像一个杯子,每次都只能取杯子顶上的东西,而对于栈就只能每次访问它的栈顶元素,从而可以达到保护栈顶元素以下的其他元素.”先进后出”或”后进先出”就是栈的一大特点,先进入栈的元素总是要等到后进入栈的元素出栈以后才能出栈.递归就是利用到了系统栈4000
,暂时保存临时结果,对临时结果进行保护.
栈的基本操作:压栈、弹栈
任务栈的概念
Task简单的说就是一组以栈的模式聚集在一起的Activity组件集合,类似于一个填充了Activity的容器,最先加入的Activity会处于容器最下面,最后加入的处于容器最上面,而从Task中取出Activity时是从最顶端先取出,最后取出的是最开始添加Activity,这就是后进先出模式,而Activity在Task中的顺序是可以控制的,在Activity跳转时用到Intent Flag可以设置新建activity的创建方式。
1,四种启动模式
1,standard 默认的启动模式 2,singleTop 需要创建的Activity已经处于任务栈中时,复用此Activity 3, singleTask 需要创建的Activity已经处于任务栈中时,弹出此Activity上的其他Activity ,让其处于栈顶。 4,singleInstance 全局单例模式,只要整个系统中创建此Activity的实例,不再创建。
2,启动模式的实现方式:
1,设置Activity的启动模式,只需要在AndroidManifest.xml里对应的<activity>标签设置Android:launchMode属性 2, 通过设置FLAG `Intent intent = new Intent(context, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.startActivity(intent);`
3,启动模式的实际应用场景
此时有A B C 三个Activity 1,如果A,B,C,都是standard的启动模式 1)先启动A ,再启动B ,然后启动C 这个时候任务栈里是 A->B->C .C位于栈顶。 2)此时再启动B ,任务栈里是 A->B->C->B 他们会依次累加 2,如果A ,B,D是standard模式,C是singleTop模式 第一种情况 1)先启动A ,再启动B ,然后启动C 这个时候任务栈里是 A->B->C .C位于栈顶。 2)如果此时再启动C,任务栈里是A->B->C ,但是会调用C 的onNewIntent()方法。 第二种情况 1)先启动A ,再启动B ,然后启动C ,再启动D, 这个时候任务栈里是 A->B->C->D . D位于栈顶。 2)如果此时再启动C,任务栈里是A->B->C->D->C (这就是说,只有C在栈顶的时候,再次启动C 的时候,他的SingleTop才有效果,否则,它跟 默认的启动模式没什么区别。) 3,如果A,B,D是standard模式,C是singleTast模式 1)先启动A ,再启动B ,然后启动C ,再启动D, 这个时候任务栈里是 A->B->C->D . D位于栈顶。 2)如果此时再次启动C,任务栈里面是A->B->C singleTask在同一个任务栈里只允许有一个实例。因为在任务栈里已经有了他的实例,他会把她之上的Activity onDestroy()掉,让自己处于栈顶 4,singleInstance 只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。
总结:
四种启动模式其实很简单,需要消化的就是singleTop 和singleTask的区别。 你只要记住两句话: 1,singleTop 是只有在栈顶的时候才复用 2,singleTask 是在栈内才复用 这四种启动模式就算掌握了
相关文章推荐
- android activity四种启动模式
- Android学习:Activity四种启动模式
- Android开发学习之路--Activity之四种启动模式
- android中activity的四种启动模式
- Android中Activity的四种启动模式详解
- Android——Activity四种启动模式
- android 启动Activity的四种模式
- Android之Activity的四种启动模式
- Android 的四种启动模式及使用场景详解
- Android中Activity四种启动模式和taskAffinity属性详解
- Android之Activity的四种启动模式
- Android Activity 的四种启动模式
- Android中Activity四种启动模式和taskAffinity属性详解
- Android中Activity四种启动模式和taskAffinity属性详解
- Android中的Activity四种启动模式(launchMode)
- android:Activity四种启动模式简单介绍
- Android四大组件之Activity(四种基本启动模式)
- android开发 activity 的四种启动模式!
- Android之Activity的四种启动模式
- [android]区分Activity的四种启动模式---LaunchMode