Android之Activity的4种加载模式
来源:互联网 发布:windows错误报告 进程 编辑:程序博客网 时间:2024/06/12 18:59
一个Task可以理解成一个Activtiy栈,可以装载一个或者多个Activity,回退和打开的顺序逻辑和基本的数据结构栈是一致的。下面的这段话非常关键:那就是,一个Application如果有N个Activity,这些Activity分布在M个Task中,那么Application的回退栈会遵循这样的原则,首先从当前Acitivty在的Task回退,直到这个Task中再无记录;那么会寻找下一个Task再次回退直到没有Activity(这个Task是怎么寻找的呢,其实Task在Appliction的总栈中也是有记载的,总是TasK中最近使用的Activity相关)。
Activity的启动模式可以通过AndroidManifest.xml文件中的元素的属性来指定,一共有4中模式:
standardsingleTopsingleTasksingleInstance
这4中模式又分两类,standard和signleTop属于一类, singleTask和signleInstance属于另一类。
standard和singleTop属性的 Activity 的实例可以属于任何任务(Task),并且可以位于Activity堆栈的任何位置。比较典型的一种情况是,一个任务的代码执行startActivity(),如果传递的 Intent 对象没有包含 FLAG_ACTIVITY_NEW_TASK 属性, 指定的 Activity 将被该任务调用,从而装入该任务的Activity 堆栈中。 standard和singleTop的区别在于:standard模式的Activity在被调用时会创建一个新的实例,所有实例处理同一个Intent对象; 但对于singleTop模式的Activity,如果被调用的任务已经有一个这样的Activity 在堆栈的顶端,那么不会有新的实例创建, 任务会使用当前顶端的Activity实例来处理Intent对象,换句话说,如果被调用的任务包含一个不在堆栈顶端的 singleTop Activity, 或者堆栈顶端为 singleTop 的Activity的任务不是当前被调用的任务,那么,仍然会有一个新的Activity对象被创建。
singleTask 和 singleInstance模式的Activity 仅可用于启动任务的情况, 这种模式的Activity总是处在Activity堆栈的最底端,并且一个任务中只能被实例化一次。两者的区别在于:对于 singleInstance模式的Activity, 任务的Activity堆栈中如果有这样的Activity,那它将是堆栈中的唯一的 Activity, 当前任务收到的 Intent 都由它处理, 由它开启的其他 Activity 将在其他任务中被启动; 对于 SingleTask模式的Activity,它在堆栈底端,其上方可以有其他Activity被创建, 但是,如果发给该Activity的Intent对象到来时该Activity不在堆栈顶端,那么该Intent对象将被丢弃,但是界面还是会切换到当前的Activity。
- standard
- singleTop
- singleTask
- singleInstance
这4中模式又分两类,standard和signleTop属于一类, singleTask和signleInstance属于另一类。
- Android之Activity的4种加载模式
- android编程之区分Activity的四种加载模式
- Android的七巧板Activity之二 Activity的加载模式
- Android的七巧板Activity之二 Activity的加载模式
- Android的七巧板Activity之二 Activity的加载模式
- Android的七巧板Activity之二 Activity的加载模式
- Android的七巧板Activity之二 Activity的加载模式
- Android的七巧板Activity之二 Activity的加载模式
- Android的七巧板Activity之二 Activity的加载模式
- Android的七巧板Activity之二 Activity的加载模式
- Android之activity加载模式
- Android 复习笔记之图解Activity的4种加载模式
- Android四种Activity的加载模式
- Android四种Activity的加载模式
- Android四种Activity的加载模式
- Android四种Activity的加载模式
- Android四种Activity的加载模式
- Android四种Activity的加载模式
- 读书笔记-App研发录-第12章-无线团队的组建和管理
- 解决maltab的中文和英文字体问题,中文乱码
- hdu 1520 Anniversary party 基础树形DP 树的最大独立集
- 数据结构与算法 LeetCode编程练习--Contains Duplicate II
- 实用的sublime插件集合 – sublime推荐必备插件
- Android之Activity的4种加载模式
- linux daemon简介
- leetcode--69.sqrt(x)
- IOS- uitextviewdemo
- python: 选择排序
- 本机socket通信(Java
- [Unity实战]攻击范围的绘制
- hdu2242考研路茫茫——空调教室(边双连通,缩点,dfs)
- uiviewcontroller 转场放大缩小动画