android核心系列--2,关于任务栈(task)
一,任务
任务是由界面组件组成的一个栈,这些界面组件可以来自多个进程,多个应用,为共同完成一项任务而存在,比如写邮件时会用到邮件应用和联系人应用中的界面组件,这些界面组件在同一个任务中运行。
二,界面组件的运行模式
1,standard 标准模式,每次调用界面组件都会生成一个新的实例压入任务栈的栈顶。
2,singleTop ,对应 Activity_FLAG_ACTIVITY_SINGLE_TOP,如果当前界面组件在栈顶,则再次调用该界面组件时不会生成新的实例,而是直接使用栈顶的界面组件,通过 onNewIntent方法将 Intent对象传给界面组件。 但是如果界面组件不在栈顶,则会在栈顶生成新的实例。
3,singleTask 和 singleInstance,当调用这种运行模式的界面组件时,会启动一个新的任务(如果还没启动的话),将该界面组件放入栈底。如果再次调用该界面组件,则会将该界面组件上方清空,再次复用该界面组件。
singleInstance有一点不同,就是新任务中有且只有这一个界面组件,而singleTask则是在新任务中会有多个其它的界面组件。
使用singleTask还需注意:如果界面组件同时设置了任务粘度属性,android:taskAffinity属性,那么该界面组件就不一定必须是根组件了,如果指定的任务已经存在,它会直接跳到指定的任务中去。
三,任务粘度 android:taskAffinity 属性
表明这个界面组件想在哪个任务中运行,单独设置该属性没用,需要再设置下面的其中一项:
1,设置 android:allowTaskReparenting = "true"
2,通过设置Activity.FLAG_ACTIVITY_NEW_TASK标记。
四,实例:
1,安卓原生应用:浏览器应用
其界面组件 BrowserActivity 配置成了 singleTask ,同时设置了 android:alwaysRetainTaskState = "true",该设置表示总是维护任务状态。
2,联系人应用:
通过 android:taskAffinity 将联系人管理,来电管理相关的界面组件分别放在不同的任务中。
参考:
《android开发精要》 范怀宇 著
android核心系列--2,关于任务栈(task)的更多相关文章
- android核心系列--1,组件生命周期
一,进程模型及进程托管 1,一个APP应用是由一个或多个组件构成的,这些组件可以运行在一个进程中,也可以分别运行在多个进程中: 进程的构造和销毁是由系统全权负责的. 2,一个应用进程只有一个应用环境对 ...
- Android组件系列----Activity组件详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- Android学习系列(37)--App调试内存泄露之Context篇(下)
接着<Android学习系列(36)--App调试内存泄露之Context篇(上)>继续分析. 5. AsyncTask对象 我N年前去盛大面过一次试,当时面试官极力推荐我使用AsyncT ...
- [转]Android Studio系列教程六--Gradle多渠道打包
转自:http://www.stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/ Android Studio系列教程六--Grad ...
- Android Studio系列教程六--Gradle多渠道打包
Android Studio系列教程六--Gradle多渠道打包 2015 年 01 月 15 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzh ...
- 一个异常与Android Studio系列教程参考
由于编译过程中遇到了错误:
- Android学习系列(23)--App主界面实现
在上篇文章<Android学习系列(22)--App主界面比较>中我们浅略的分析了几个主界面布局,选了一个最大众化的经典布局.今天我们就这个经典布局,用代码具体的实现它. 1.预览图先看下 ...
- Android设计模式系列
http://www.cnblogs.com/qianxudetianxia/category/312863.html Android设计模式系列(12)--SDK源码之生成器模式(建造者模式) 摘要 ...
- Activity的任务栈Task以及启动模式与Intent的Flag详解
什么是任务栈(Task) 官方文档是这么解释的 任务是指在执行特定作业时与用户交互的一系列 Activity. 这些 Activity 按照各自的打开顺序排列在堆栈(即“返回栈”)中. 其实就是以栈的 ...
随机推荐
- windows 7 64位下配置mysql64位免安装版
1.官方网站下载mysql-noinstall-5.1.51-winx64.zip 2.解压到E:\Program Files\MySQL.(路径自己指定) 3.在E:\Program Files\M ...
- 回归(regression)的理解(regressor,回归子)
1. 基本概念 回归(regression)是监督学习(given {(xi,yi)})的一个重要分类.回归用于预测输入变量(自变量,Xi)与输出变量(因变量,Yi) 之间的关系,特定是当输入变量的值 ...
- Websphere设备、企业部署应用程序 【应用】
Websphere设备.企业部署应用实例 环境 名称 版本号 Linux系统 CentOS-5.6-x86_64 Oracle软件 10201_database_linux_x86_64.cpio W ...
- 5 wcf双工
1 创建两个项目 Wcf_WsDual_Service Wcf_WsDual_Client 2 Wcf_WsDual_Service 项目中创建 LoginService.cs 的wcf文件 ...
- sqlplus 上下工具
http://yunpan.cn/QNXXpjP9aBy6v 訪问password 420b 想在Unix.Linux环境下使用sqlplus,像在win以下一样,实现上下翻页. 怎么办呢? 首先要确 ...
- 关于iis里面 .net framework 版本的切换
然而,即便这样还是不够的 在iis上浏览网站会报以下错误: 这是什么原因呢?这是因为应用程序池中没有使用asp.net v4.0 网站程序是用v4.0写的,所以我们要用4.0的程序池版本,当前应用程序 ...
- python3 小技巧(2)
原文 http://blog.csdn.net/jclass/article/details/6145078 一. base64 编码和解码任意的二进制字符串到文本字符串(主要用在HTTP EMAIL ...
- Myeclipse2014 激活 (包括方法和工具)
课程要求Myeclipse做各种各样的实验,对,当各种插头井.突然Myeclipse提示:使用过期,你可知道按那些个插件收了多少挫折么,怎能刚安好就用不了.可是又不想buy,所以就上网找破解咯,当中发 ...
- UWP 应用中的Back button(TitleBar) 的处理
后退按钮是一项系统提供的 UI 提示,可以在后退堆栈或用户导航历史记录中支持向后导航. 用起来其实也是很简单的,只需要在App.xaml.cs 中修改(添加)如下红色代码,便可实现.. sealed ...
- 索引Index
优缺点 索引是对数据库表中一列或多列的值进行排序的一种结构为了提高查询的效率索引一般建立在需要经常查询的地方 优点 创建索引可以大大提高系统的性能第一,通过创建唯一性索引,可以保证数据库表中每一行数据 ...