您的位置:首页 > 产品设计 > UI/UE

Android API Guides 阅读笔记(7)----Overview Screen

2015-07-29 19:26 561 查看
这节的内容应该算是上节(Task and Back Stack)的补充,Overview Screen主要是描述最近任务(task)

用以显示最近任务的一个功能(Android设备上最右边的按钮),在Android5.0之前称为recents screen(或者recent task list)可以很方便的让用户切换到不同的应用程序,这个功能不多说,只要使用过Android设备,应该都了解。通过阅读这一节的内容,将会了解到如何管理Overview Screen,包括,添加Task,移除Task,以及在Overview Screen中保留Task

overview screen的概念

通常是由Android系统定义的,如果开发者想要自定义,管理的方法如下:

通过ActivityManager.AppTask类进行管理

通过启动一个Activity的Intent中的flag进行配置

通过< activity >节点的属性进行配置

怎样添加Task到Overview Screen

如上节内容所诉,主要通过两种方式

在使用Intent启动一个Activity时,添加flag:

FLAG_ACTIVITY_NEW_DOCUMENT:当创建新的document(文档上写的是document而不是Activity,对此不太了解,后续补上)时,系统是在逻辑上插入断点,使新启动的Activity在Overview Screen中成为一个新的Task,而事实上并没不是新建一个Task(注意,在Android5.0之后,此常量值替换了FLAG_ACTIVITY_CLEAN_WHEN_TASK_RESET)

FLAG_ACTIVITY_MULTIPLE_TASK:当创建新的document时,系统总是会为将要启动的Activity创建一个新的Task,并使其称为根Activity,这样的设置可以让同一个document在多个Task中打开

在清单文件中对应< activity >节点下添加属性 android:documentLaunchMode,有以下四个值:

intoExisting:重新使用一个存在的Task,类似设置FLAG_ACTIVITY_NEW_DOCUMENT而不设置FALG_ACTIVITY_MULTIPLE_TASK时的作用

always:为将要打开的document创建一个新的Task,即使这个document已经打开过。类似设置FLAG_ACTIVITY_NEW_DOCUMENT同时也设置了FLAG_ACTIVITY_MULTIPLE的作用

none:不会为将要打开的document创建新的Task,这是overview screen处理Task的默认模式,显示单任务的App

never:不会为将要打开的document创建新的Task,类似设置FLAG_ACTIVITY_NEW_DOCUMENT或者FLAG_ACTIVITY_MULTIPLE_TASK其中一个的作用

注意,在设置none或者never时,应该确保其Activity设置类launchMode的值为standard,如果没有设置这个值,将会使用默认的documentLaunchMode=”none”

怎样移除一个Task

通常,当一个Task中的所有Activity都finish的时候,这个Task是自动从overview screen中移除的。当然,也可以通过Intent的flag或者清单文件中的< activity >节点进行设置来移除

清单文件设置:

android:excludeFromRecents:通过设置该属性值为true,可以将一个Task总是排除overview screen,也就是让该Activity所在的Task不显示在overview screen中

android:maxRecents:设置应用程序在overview screen中能包含的Task的最大数量,默认值为16,当到达这个数量时,系统将会自动清理掉最近最少使用的Task

使用AppTask类的方法:

通过AppTask类中的finishAndRemoveTask()方法,在创建Task的Activity中指定什么时候移除它(在使用这个的时候会忽略掉FLAG_ACTIVITY_RETAIN_IN_RECENT,也就是说,移除的权限比保留更高,当想移除的时候,即使设定了保留的属性,依然会移除掉)

怎样保留一个Task

如果想在overview screen中保留一个Task(即使这个Task对应的Activity已经结束了)

在通过Intent启动这个Activity时,使用flag值为:FLAG_ACTIVITY_RETAIN_IN_RECENTS

当然,在< activity >节点设置android:autoRemoveFromRecents的值为false,也能达到同样的效果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: