概览屏幕(最新动态屏幕、最近任务列表)
来源:互联网 发布:欧美搞笑电影 知乎 编辑:程序博客网 时间:2024/06/03 18:10
好吧,这一篇基本上就是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 并在概览屏幕中创建新文档,如下例所示:
@Overrideprotected 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);}@Overrideprotected void onNewIntent(Intent intent) { super.onNewIntent(intent); /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this activity is 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 标志。
- 概览屏幕(最新动态屏幕、最近任务列表)
- 概览屏幕
- Android概览屏幕基础之添加任务和删除任务
- Overview Screen(概览屏幕)
- 屏幕支持概览
- ABAP 屏幕属性列表
- android-支持多种屏幕[屏幕支持概览] 一
- android-支持多种屏幕[屏幕支持概览] 五
- Android应用组件之概览屏幕
- 屏幕
- 屏幕
- 屏幕
- 屏幕
- 屏幕
- crontab 任务不能输出到控制台(屏幕)
- C#软件开发实例.私人订制自己的屏幕截图工具(一)功能概览
- C#软件开发实例.私人订制自己的屏幕截图工具(一)功能概览
- 安卓学习笔记(六):Overview Screen 概览屏幕 跟着API指南来学习
- watch命令
- 数据结构学习 65页 P1
- java实现 微博登录、微信登录、qq登录实现代码
- HTTP 协议
- matlab 的使用
- 概览屏幕(最新动态屏幕、最近任务列表)
- Key Points about ActiveSupport::Concern
- MATLAB中的sort函数
- Python Web部署方式
- word review
- I. Implementing Enterprise Integration Patterns
- 如何在MFC中使用cout和printf,输出到控制台
- Qt实战开发-目录树
- Chapter 1. Building Blocks for Route Definitions