Android 基础学习——Activity四种启动模式
2015-09-03 17:15
841 查看
1. 启动模式
启动模式就是Activity启动时的策略,在AndroidMainfest.xml中的标签android:launchMode属性设置;
启动模式有四种,分别是 standard、singleTop、singleTask、singleInstance;
2. 任务栈
每个应用都有一个任务栈,用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序;
比如Activity1->Activity2->Activity3;
任务栈为:
3. Activity启动模式设置:
3. 启动模式
1) standard:每次激活Activity时(startActivity),都创建Activity实例,并放入任务栈。
2) singleTop:如果在任务的栈顶正好存在该Activity的实例,就重用该实例,否则就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不再栈顶都会创建)
3)singleTask: 如果栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让实例回到栈顶,因此还在它上面的实例会被移除栈。如果栈中不存在该实例,就会创建新的实例放入栈中。
4)singleInstance:在一个新栈中创建该Activity实例,并让多个应用共享该栈中的Activity实例。一旦该模式的Activity的实例存在某个栈中,任何应用再激活该Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。
启动模式就是Activity启动时的策略,在AndroidMainfest.xml中的标签android:launchMode属性设置;
启动模式有四种,分别是 standard、singleTop、singleTask、singleInstance;
2. 任务栈
每个应用都有一个任务栈,用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序;
比如Activity1->Activity2->Activity3;
任务栈为:
3. Activity启动模式设置:
<activity android:name=".MainActivity" android:launchMode="standard" />
3. 启动模式
1) standard:每次激活Activity时(startActivity),都创建Activity实例,并放入任务栈。
2) singleTop:如果在任务的栈顶正好存在该Activity的实例,就重用该实例,否则就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不再栈顶都会创建)
3)singleTask: 如果栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让实例回到栈顶,因此还在它上面的实例会被移除栈。如果栈中不存在该实例,就会创建新的实例放入栈中。
4)singleInstance:在一个新栈中创建该Activity实例,并让多个应用共享该栈中的Activity实例。一旦该模式的Activity的实例存在某个栈中,任何应用再激活该Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。
相关文章推荐
- Android开发之自定义控件与属性动画Animation的结合使用
- Android笔记:如何写出一个侧滑菜单
- android4.0 MediaPlayer的notify监听机制的全面剖析
- android中ListView的定位:使用setSelectionFromTop
- Android学习之文件存储方式
- 切换Android SDK Manager下载源
- Android适配器-附万能适配器工具类
- 关于Android studio彻底修改包名的解决办法
- Android ——fragment
- android使用smb协议在线播放视频(二)
- Android源码环境配置之Ubuntu 14.04 LTS x64
- Android 四大组件之Service解析
- PULL解析
- android 工具 Draw 9-patch 和去黑边
- 正确使用Android性能分析工具——TraceView
- Android开发 OAuth认证
- Android:OnClickListener cannot be resolved to a type
- Android:problem opening wizard the selected wizard could not be started
- android短信拦截实现的两种方法
- Android 文本阅读以及TextView指定字符高亮显示