好吧,这一篇基本上就是Android官方文档抄过来了……文档写的很清楚简洁,似乎不会精简什么了………

概览屏幕是一个系统级别的UI,其中列出了最近访问过的Activity和任务,用户可以浏览该列表并选择要恢复的任务,也可以通过滑动清除任务将其从列表中移除。通常应该允许系统定义任务和Activity在概览屏幕中显示方法,且无需修改,应用可以确定Activity在概览屏幕中显示方式和时间,可以使用ActivityManager.AppTask类来管理任务,使用Intent类的Activity标志来指定某Activity添加到概览屏幕或从中移除的时间,此外,可以使用<activity>属性在清单文件中设置该行为。

将任务添加到概览屏幕:

使用Intent标志添加任务:

为 Activity 创建新文档时,可调用 ActivityManager.AppTask 类的 startActivity() 方法,以向其传递启动 Activity 的 Intent。 要插入逻辑换行符以便系统将 Activity 视为新任务显示在概览屏幕中,可在启动 Activity 的 Intent的 addFlags() 方法中传递 FLAG_ACTIVITY_NEW_DOCUMENT 标志。

如果在创建新文档时设置 FLAG_ACTIVITY_MULTIPLE_TASK 标志,则系统始终会以目标 Activity 作为根创建新任务。此设置允许同一文档在多个任务中打开。以下代码演示了主 Activity 如何执行此操作:

public void createNewDocument(View view) {final Intent newDocumentIntent = newDocumentIntent();if (useMultipleTasks) {newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);}startActivity(newDocumentIntent);}private Intent newDocumentIntent() {boolean useMultipleTasks = mCheckbox.isChecked();final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());return newDocumentIntent;}private static int incrementAndGet() {Log.d(TAG, "incrementAndGet(): " + mDocumentCounter);return mDocumentCounter++;}
}注:使用 FLAG_ACTIVITY_NEW_DOCUMENT 标志启动的 Activity 必须具有在清单文件中设置的 android:launchMode="standard" 属性值(默认)。

当主 Activity 启动新 Activity 时,系统会搜遍现有任务,看看是否有任务的 Intent 与 Activity 的 Intent 组件名称和 Intent 数据相匹配。 如果未找到任务或者 Intent 包含 FLAG_ACTIVITY_MULTIPLE_TASK 标志,则会以该 Activity 作为其根创建新任务。如果找到的话,则会将该任务转到前台并将新 Intent 传递给 onNewIntent()。新 Activity 将获得 Intent 并在概览屏幕中创建新文档,如下例所示:

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_new_document);mDocumentCount = getIntent().getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0);mDocumentCounterTextView = (TextView) findViewById(R.id.hello_new_document_text_view);setDocumentCounterText(R.string.hello_new_document_counter);
}@Override
protected void onNewIntent(Intent intent) {super.onNewIntent(intent);/* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this activityis reused to create a new document.*/setDocumentCounterText(R.string.reusing_document_counter);
}
使

使用Activity属性添加任务:

此外,Activity 还可以在其清单文件中指定始终通过使用 <activity> 属性 android:documentLaunchMode 进入新任务。 此属性有四个值,会在用户使用该应用打开文档时产生以下效果:

"intoExisting"
该 Activity 会对文档重复使用现有任务。这与不设置FLAG_ACTIVITY_MULTIPLE_TASK 标志、但设置FLAG_ACTIVITY_NEW_DOCUMENT 标志所产生的效果相同,如上文的使用 Intent 标志添加任务中所述。
"always"
该 Activity 为文档创建新任务,即便文档已打开也是如此。使用此值与同时设置 FLAG_ACTIVITY_NEW_DOCUMENT 和 FLAG_ACTIVITY_MULTIPLE_TASK标志所产生的效果相同。
"none”"
该 Activity 不会为文档创建新任务。概览屏幕将按其默认方式对待此 Activity:为应用显示单个任务,该任务将从用户上次调用的任意 Activity 开始继续执行。
"never"
该 Activity 不会为文档创建新任务。设置此值会替代FLAG_ACTIVITY_NEW_DOCUMENT 和 FLAG_ACTIVITY_MULTIPLE_TASK 标志的行为(如果在 Intent 中设置了其中一个标志),并且概览屏幕将为应用显示单个任务,该任务将从用户上次调用的任意 Activity 开始继续执行。

注:对于除 none 和 never 以外的值,必须使用 launchMode="standard" 定义 Activity。如果未指定此属性,则使用 documentLaunchMode="none"。

移除任务: 在于概览屏幕创建新任务的 Activity 中,您可以通过调用 finishAndRemoveTask() 方法指定何时移除该任务以及结束所有与之相关的 Activity。

public void onRemoveFromRecents(View view) {// The document is no longer needed; remove its task.finishAndRemoveTask();
}

保留已完成的任务:

若要将任务保留在概览屏幕中(即使其 Activity 已完成),可在启动 Activity 的 Intent 的 addFlags() 方法中传递 FLAG_ACTIVITY_RETAIN_IN_RECENTS 标志。

private Intent newDocumentIntent() {final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT |android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());return newDocumentIntent;
}

要达到同样的效果,请将  <activity>  属性android:autoRemoveFromRecents  设置为  false 。文档 Activity 的默认值为  true ,常规 Activity 的默认值为  false 。如前所述,使用此属性替代  FLAG_ACTIVITY_RETAIN_IN_RECENTS  标志。

概览屏幕(最新动态屏幕、最近任务列表)相关推荐

  1. 根据屏幕大小动态设置字体rem

    //根据屏幕大小动态设置字体rem var docEl = document.documentElement,//当设备的方向变化(设备横向持或纵向持)此事件被触发.绑定此事件时,//注意现在当浏览器 ...

  2. 华为matebook电脑屏幕亮度动态变化的解决办法

    我十一月初买的i7独显版的matebook14,开始买的是银色的,感觉不好看,就换成了灰色的,果然灰色的看起来更沉稳,更耐看,最主要是键盘是黑色的,灰色的外框和键盘不会形成强烈的对比,所以眼睛看起来不 ...

  3. html输出屏幕,从HTML屏幕打印动态页眉或页脚

    使用PHP在HTML页面的页脚中打印变量(插入打印分页符之前),我尝试使用this solution.实际上,我将包装在 中的打印的php变量设置为@media print并给它position:fi ...

  4. ABAP动态编程-动态生成报表、动态屏幕

    目录 前言 一.动态生成报表并调用 二.动态生成屏幕并调用 总结 前言 本文主要讲述ABAP编程中根据逻辑自动生成报表及屏幕(依托语句GENERATE DYNPRO)的实现示例及简单说明. 一.动态生 ...

  5. ABAP选择屏幕:动态选择屏幕

    导语:在做ALV报表的时候,碰见过用 RADIOBUTTON区分不同页签,或者是区分不同的选择屏幕字段的需求,这里简单的说一下,如何通过RADIOBUTTON来实现动态选择屏幕. 关键元素: 1. M ...

  6. 动态分辨率是什么意思_b站么么直播最新动态里都有啥 b站什么意思

    他们已经为这个实验发出了250多部手机,但这可能只是一小部分. 无聊的时候做什么?这是一个永恒的.自相矛盾的命题. Bilibili决定用一个纯粹无聊的直播节目和其他几百万无聊的人来回答这个问题,看着 ...

  7. 虚拟研讨会:移动Web应用开发技术最新动态

    虚拟研讨会:移动Web应用开发技术最新动态 2011年03月02日 为了掌握移动Web应用开发的最新动态,InfoQ邀请一些该领域最流行的库.工具和框架的缔造者,组织了一场虚拟研讨会. Michael ...

  8. android屏幕灯光app,屏幕边缘LED灯光

    屏幕边缘LED灯光app将为我们提供优质的闪光特效和边缘模式玩法,在这里你的手机桌面就成了闪光LED特效,你可以自由设置屏幕边缘闪光.屏幕边缘LED灯光给大家准备了海量炫酷功能,快来体验吧. 软件介绍 ...

  9. 【Android 屏幕适配】屏幕适配基础概念 ① ( Android 与 iOS 屏幕宽高比种类 | 屏幕像素密度 DPI )

    文章目录 一.Android 与 iOS 屏幕宽高比种类 二.屏幕像素密度 参考文档 : 设备兼容性概览 屏幕兼容性概览 支持不同的像素密度 声明受限屏幕支持 一.Android 与 iOS 屏幕宽高 ...

最新文章

  1. libcudart.so.7.5: cannot open shared object file: No such file or directory
  2. 【SSM框架系列】Spring - JdbcTemplate声明式事务
  3. Hibernate双向多对多关联
  4. 数据结构和算法一定要背算法的代码嘛_我们为什么要学习数据结构和算法?
  5. Jquery操作表单Select元素常用方法
  6. sh(Spring+Spring mvc+hibernate)——IDeptDao.java
  7. (回溯Uva524)素数环
  8. mysql远程登录备份_mysql实现自动远程备份一办法(转)
  9. VC++ HIDAPI实现USB数据读写
  10. oracle dataguard 03113 error code solution
  11. 在java中对字符串的一些实现处理
  12. CMake test目录和项目同名错误
  13. Go语言基础:结构体
  14. 利用Termux在手机上运行爬虫下载漫画
  15. php++ui设计课程,UI设计主要学什么?
  16. 如何锻炼自己的口才?
  17. python二级准备一个月能行吗_计算机二级选哪个?一个多月的准备时间够吗?
  18. java 调用麦克风录音_Java 实现麦克风自动录音
  19. Java抽象类方法和抽象类
  20. gis空间校正没反应_使用ArcGIS进行空间校正的步骤(矢量数据)

热门文章

  1. inline-block什么意思中文_css中inline-block是什么?inline-block布局的使用
  2. python pickle反序列化漏洞_Python Pickle反序列化带来的安全问题
  3. nginx利用referer指令实现防盗链配置
  4. springboot项目打包运行
  5. (转载)彻底理解浏览器的缓存机制
  6. 重构改善既有代码设计--重构手法11:Move Field (搬移字段)
  7. LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配
  8. 正确解读free -m
  9. php curl流方式远程下载大文件
  10. Lift当中的AnyVarTrati源码解析