1、与任务相关的属性

  • taskAffinity :修改任何给定Activity的关联

    • 系统使用包名标识应用的默认任务关联;
    • taskAffinity属性取字符串值,必须不同于包名;
    • taskAffinify起作用的两种情况
      • 启动Activity的Intent包含FLAG_ACTIVITY_NEW_TASK;
      • Activity的allowTaskReparenting为true;
  • lauchMode
    • standard,默认模式 —— 系统在启动Activity的任务中创建Activity的新实例并向其传送Intent。Activity可以多次实例化,每个实例可以属于不同任务,一个任务可以拥有多个实例。
    • singleTop —— 若当前任务的顶部已经存在Activity的一个实例,则系统会通过onNewIntent()方法传送Intent。Activity可以多次实例化,每个实例均可属于不同的任务,一个任务可以拥有多个实例(前提是位于返回栈顶的Activity并不是Activity的现有实例)。
    • singleTask —— 系统创建新任务并实例化位于新任务底部的Activity。如果该Activity的一个实例已经存在一个单独任务中,系统会通过现有实例的onNewIntent()方法向其传送Intent。一次只能存在Activity的一个实例。
    • singleInstance —— 与singleTask相同,只是系统不会将任何其他Acitivty启动到包含实例的任务中。该Activity是其任务唯一仅有的成员;由此Activity启动的任何Activity均在单独任务打开。
    • 使用launchMode属性为Activity指定的行为可以由Intent附带的Activity启动标志替代。
  • allowTaskReparenting —— true/false,Activity是否可以从其启动的任务移动到与其具有关联的任务。
  • clearTaskOnLaunch —— true/false,若设置为true,每当用户离开任务后返回时,系统都会将堆栈清除到只剩下根Activity。与alwaysRetainTaskState刚好相反。
  • alwaysRetainTaskState —— true/false,用户长时间离开任务后,仍将所有Activity保留在其堆栈中(默认会清除根Activity外的其他Activity)。
  • finishOnTaskLaunch —— true/false,类似clearTaskOnLaunch,但只对单个Activity起作用。可能导致任何Activity停止,包括根Activity。用户离开后返回任务,任务将不复存在。

2、与任务相关的Intent标志 (启动模式)

  • FLAG_ACTIVITY_NEW_TASK —— 在新任务中启动Activity。如果正在启动的Activity已经处于运行状态,则该任务会转到前台并恢复其最后状态,同时Activity会在onNewIntent()中收到新Intent。

    • 在Activity上下文之外启动Activity需要给Intent设置FLAG_ACTIVITY_NEW_TASK标志,否则会报异常。
    • 首先会查找是否存在和被启动Activity具有相同亲和性的任务栈,如果有,则直接把这个栈整体移动到前台,并保持栈中状态不变。
    • 默认情况下同一个应用中的所有Activity拥有相同的taskAffinity
  • FLAG_ACTIVITY_SINGLE_TOP—— 如果正在启动的Activity是当前Activity(位于返回战顶部),则现有实例会接收对onNewIntent()的调用,而不是创建新实例。产生与singleTop相同的行为。
  • FLAG_ACTIVITY_CLEAR_TOP —— 如果正在启动的Activity已在当前任务中运行,则会销毁当前任务顶部所有Activity,并通过onNewIntent()将此Intent传递给Activity已恢复的实例。
  • FLAG_ACTIVITY_CLEAR_TOP通常与FLAG_ACTIVITY_NEW_TASK结合使用。

3、处理关联(即Activity优先属于哪个任务)

(1)默认情况下,同一应用中的所有Activity彼此关联,优先位于相同任务中。
(2)通过 taskAffinity属性设置关联

Android中与task相关的几个属性的更多相关文章

  1. Android中关于Task的一些认识

    Android中Task是一个逻辑上的概念,简单地说,就是一个栈里面顺序存储着的多个Activity.这些Activity能够是来自同一个App,也能够是来自不同的Apps. Task的创建 比方之前 ...

  2. Android中的task和stack

    今天在重新理了一遍intent的过程中发现task是一个神奇的东西,而它又和stack有着很深的联系.task顾名思义是一个任务,但是这个任务可不一定只是来自一个app,比如我用微信来发一张图片,那么 ...

  3. Android中@id与@+id区别和sharedUserId属性详解

    Android中的组件需要用一个int类型的值来表示,这个值也就是组件标签中的id属性值. id属性只能接受资源类型的值,也就是必须以@开头的值,例如,@id/abc.@+id/xyz等. 如果在@后 ...

  4. Android中的Activity相关知识总结

    一.什么是Activity? 简单理解:Activity是Android组件中最基本也是最为常见用的四大组件之一.是一个与用户交互的系统模块,一个Activity通常就是一个单独的屏幕(页面), 它上 ...

  5. Android中图片处理相关问题

    在Android的开发中,我们经常回去处理一些图片相关的问题,比如当加载图片到内存中产生的OOM(OutOfMemory)异常.图片加载到内存中占多大内存的问题.jpg png两种常见的图片的原理及区 ...

  6. Android中WebView的相关使用

    近期做的项目中,遇到个非常棘手的问题: 客户给我的数据是有限制的,因此,在返回某条详细页面内容的时候,他仅仅能给我一个html片段,里面包括 文字,图片以及附件的下载地址.假设网页模版规范的爱比較好说 ...

  7. 家庭记账本app进度之android中AlertDialog的相关应用以及对日期时间的相关操作(应用alertdialog使用的谈话框)

    对于AlertDialog的相关知识: 1.创建构造器AlertDialog.Builder的对象:    2.通过构造器对象调用setTitle.setMessage.setIcon等方法构造对话框 ...

  8. android中与Adapter相关的控件----ListView

    ListView讲解: 一.ListView这个控件是一个使用非常广泛的控件,值得深入的学习和研究.基本使用已经在Adapter中使用过了 二.常用的属性和方法 footerDividersEnabl ...

  9. android中与Adapter相关的控件----Spinner&AutoCompleteTextView

    Spinner(列表选项框) & AutoCompleteTextView(自动完成文本框) 一.列表选项框核心属性 android:dropDownHorizontalOffset设置列表框 ...

随机推荐

  1. lesson - 6 课程笔记

    一.df  作用:  显示磁盘分区上的可使用的磁盘空间, 默认显示单位为kb . 可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间的等信息. 选项: -a :包含全部的文件系统 -h :以 ...

  2. Extjs 取消backspace事件

    Ext.getDoc().on('keydown',function(e){ if(e.getKey() == 8 && e.getTarget().type =='text' &am ...

  3. Linux下磁盘监控及系统版本-CPU-内存等查看

    1.磁盘IO监控工具 iotop 输入命令:iotop   主要查看程序使用的磁盘IO的信息 安装:yum -y install iotop 第一行:10:01:23 — 当前系统时间126 days ...

  4. MHA高可用架构与Atlas读写分离

    1.1 MHA简介 1.1.1 MHA软件介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton ...

  5. Android 一排按钮居中显示

    将一排按钮放在LinearLayout中,设置LinearLayout的Android gravity属性为center_vertical(垂直居中)

  6. requireJS(版本是2.1.15)学习教程(一)

    一:为什么要使用requireJS? 很久之前,我们所有的JS文件写到一个js文件里面去进行加载,但是当业务越来越复杂的时候,需要分成多个JS文件进行加载,比如在页面中head内分别引入a.js,b. ...

  7. 漂亮的提示框SweetAlert使用教程

    一.简介 所使用过的弹出框插件,SweetAlert是最好用的.发展至今,已经有两个版本,一个是原版 t4t5/sweetalert , 一个是分支版 limonte/sweetalert2 ,更新相 ...

  8. swiper轮播问题之一:轮播图内容为动态数据生成时轮播图无法自动轮播

    本人在用H5做移动端项目中使用Swiper遇到的两个问题,因此加深了对Swiper的掌握,分享出来对刚开始接触Swiper的童鞋们或多或少会有帮助.        首先,new Swiper的初始化最 ...

  9. Excel数据导入至Dataset中

    public static DataSet ExcelToDataSet(string ppfilenameurl,string pptable) { string strConn = "P ...

  10. Hibernate学习笔记(1)---hibernate快速上手与准备工作

    持久层介绍 持久化:将内存中的数据保存在磁盘等存储设备中. 持久化对象:指已经存储在数据库护着磁盘的业务对象 经典的软件应用体系结构(三层结构) 在三层结构中,由于业务逻辑除了负责业务逻辑以外,还要负 ...