Android教程 -07 Activity的任务栈和启动模式
2015-10-26 10:04
489 查看
Activity是由任务栈管理的,一般情况下一个应用程序只有一个任务栈。
栈的特点就是先进后出,与栈截然相反的是队列,队列的特点是先进先出。
Activity就是采用栈结构进行管理的,先打开的Activity是最后退出的。
一个应用程序一被开启系统就给他分配一个任务栈,当所有的activity都退出的时候,任务栈就清空了。
任务栈的id是一个integer的数据类型 自增长的。
在android操作系统里面会存在多个任务栈,一般一个应用程序对应一个任务栈。
桌面应用和一般的应用程序是一样的,任务栈的行为也是一样。
默认情况下, 关闭掉一个应用程序,清空了这个应用程序的任务栈。应用程序的进程还会保留。
Activity有四种启动模式, 我们一般采用默认的启动模式,如果使用其它的启动模式? 非常简单只需要在清单文件Activity节点下做如下配置就可以了:
四种启动模式分别为:
博客对于新手来说看起来可能比较费劲,如果大家不明白的话,可以参考视频
视频为本篇播客知识点讲解,建议采用超清模式观看, 欢迎点击订阅我的优酷
视频1 任务栈
视频2 启动模式
什么是栈?
栈是一种常用的数据结构,栈只允许访问栈顶的元素,栈就像一个杯子,每次都只能取杯子顶上的东西栈的特点就是先进后出,与栈截然相反的是队列,队列的特点是先进先出。
Activity就是采用栈结构进行管理的,先打开的Activity是最后退出的。
一个应用程序一被开启系统就给他分配一个任务栈,当所有的activity都退出的时候,任务栈就清空了。
任务栈的id是一个integer的数据类型 自增长的。
在android操作系统里面会存在多个任务栈,一般一个应用程序对应一个任务栈。
桌面应用和一般的应用程序是一样的,任务栈的行为也是一样。
默认情况下, 关闭掉一个应用程序,清空了这个应用程序的任务栈。应用程序的进程还会保留。
Activity启动模式
Android系统中的Activity可以说一件很赞的设计,它在内存管理上良好的设计,使得多任务管理在Android系统中运行游刃有余。但是Activity绝非启动展示在屏幕而已,其启动方式也大有学问,本文讲具体介绍Activity的启动模式的诸多细节,纠正一些开发中可能错误的观点,帮助大家深入理解Activity。Activity有四种启动模式, 我们一般采用默认的启动模式,如果使用其它的启动模式? 非常简单只需要在清单文件Activity节点下做如下配置就可以了:
<activity android:name=".task.Task2Activity" android:label="task2" android:launchMode="singleInstance" > </activity>
四种启动模式分别为:
standard
默认标准的启动模式,每次startActivity都是创建一个新的activity的实例。适用于绝大大数情况singleTop
单一顶部,如果要开启的activity在任务栈的顶部已经存在,就不会创建新的实例,而是调用 onNewIntent() 方法。singletask
单一任务栈 , activity只会在任务栈里面存在一个实例。如果要激活的activity在务栈里面已经存在,就不会创建新的activity,而是复用这个已经存在的activity,调用 onNewIntent() 方法,并且清空当前activity任务栈上面所有的activitysingleInstance
Activity在单独的任务栈中,单一实例,整个手机操作系统里面只有一个实例存在。博客对于新手来说看起来可能比较费劲,如果大家不明白的话,可以参考视频
视频为本篇播客知识点讲解,建议采用超清模式观看, 欢迎点击订阅我的优酷
视频1 任务栈
视频2 启动模式
相关文章推荐
- Android教程 -07 Activity的任务栈和启动模式
- java/android中获取当前日期的方法
- android的widget讲解
- 日常杂存
- 自定义动画&动画总结
- android中三种onClick事件的实现
- Android 主题及自定义窗口
- Android中内容观察者的使用---- ContentObserver类详解
- android横竖屏切换
- android 用 XML 自定义边框(只上下边框有色)
- Android开发技巧-Fragment的懒加载
- 安卓开发学习之005 LinearLayout之Weight/measureWithLargestChild详解
- android android.view.InflateException: Binary XML file line #14: Error inflating class<unknown>
- android在Service,BroadCast onReceiver()中弹出Dialog对话框
- Android_10_Java调用C代码(纯手工制作)
- Android创建项目时候为什么是RelativeLayout
- Android studio 中的Theme Editor神器
- Android 4.0新组件:GridLayout详细说明
- Android版本和API Level对应关系
- Android的Socket通信编程实例