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
通过ActivityManager.AppTask类进行管理
通过启动一个Activity的Intent中的flag进行配置
通过< activity >节点的属性进行配置
在使用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”
清单文件设置:
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,也就是说,移除的权限比保留更高,当想移除的时候,即使设定了保留的属性,依然会移除掉)
在通过Intent启动这个Activity时,使用flag值为:FLAG_ACTIVITY_RETAIN_IN_RECENTS
当然,在< activity >节点设置android:autoRemoveFromRecents的值为false,也能达到同样的效果
用以显示最近任务的一个功能(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,也能达到同样的效果
相关文章推荐
- request.getParameterMap()的用法
- UI 第三课 ⼀、自定义视图 二、视图控制器指定⾃自定义View 三、检测屏幕旋转 四、处理内存警告 五、容器视图控制器
- iOS -UI-06 UIImageView 动画
- NSValue/NSNumber
- Qt 3D教程(四)结合Qt Quick来实现动画的效果
- 【读书笔记】UIFont-如何知道字体的PostScript名称
- 【读书笔记】UIFont-如何知道字体的PostScript名称
- UILocalNotification
- 手动创建UIWindow及UIWindowLevel的说明
- Incorrect string value: '' for column '' at row 1
- iOS 在UILabel显示不同的颜色和字体
- 创建UILable的时候,可以根据文字算出文字所占区域大小的方法
- E2202 Required package 'VclJPG' not found
- 根据文字算出文字所占区域大小(用于创建多个UILabel时可以用)(不知道这个方法的天猫程序员自从看到这个方法已经哭晕在厕所)
- UILabei
- UITableViewCell通过cell.backgroundColor设置背景颜色为什么没有效果
- How do I sort an array of hashes by a value in the hash?
- VS2008 LINK : fatal error LNK1000: Internal error during IncrBuildImage
- UITouch 触摸事件处理(实例)
- ios学习笔记:设置UIButton的文字显示位置、字体的大小、字体的颜色