- 浏览: 39544 次
- 性别:
- 来自: 北京
文章分类
最新评论
启动任务
当一个activity被指定一个“android.intent.action.MAIN”做为动作,以及“android.intent.category.LAUNCHER”做为类别的intent过滤器之后,它就被设置为一个任务的入口点。这样的过滤器设置会在应用程序加载器中为此activity显示一个图标和标签,以供用户加载任务或加载之后在任意时间回到这个任务。
第二个能力相当重要:用户必须可以离开一个任务,并在一段时间后返回它。出于这个考虑,加载模式被设定为“singleTask”和“singleInstance”的activity总是会初始化一个新任务,这样的activity仅能用于指定了一个MAIN和LAUNCHER过滤器的情况之下。我们来举例说明如果没指定过滤器的情况下会发生的事情:一个intent加载了一个“singleTask”的activity,初始化了一个新任务,用户在这个任务中花费了一些时间来完成工作。然后用户按下了HOME键。于是任务被要求转至后台并被主屏幕所掩盖。因为它并没有在应用程序加载器中显示图标,这将导致用户无法再返回它。
类似的困境也可由FLAG_ACTIVITY_NEW_TASK标记引起。如果此标记使一个activity启动了一个新任务继而用户按下了HOME键离开了它,则用户必须要有一些方法再次回到这个任务。一些实体(诸如通知管理器)总是在另外的任务中启动新activity,而不是做为它们自己的一部分,所以它们总是将FLAG_ACTIVITY_NEW_TASK标记包含在intent里面并传递给startActivity()。如果你写了一个能被外部实体使用这个标记调用的activity,你必须注意要给用户留一个返回这个被外部实体启动的任务的方法。
当你不想让用户再次返回一个activity的情况下,可以将 <activity> 元素的 finishOnTaskLaunch设置为“true”。参见下面的“清理堆栈”。
清理堆栈
如果用户离开一个任务很长一段时间,系统会清理该任务中除了根activity之外的所有activity。当用户再次回到这个任务的时候,除了只剩下初始化activity尚存之外,其余都跟用户上次离开它的时候一样。这样做的原因是:在一段时间之后,用户再次回到一个任务的时候,他们更期望放弃他们之前的所作所为,做些新的事情。
这些属于默认行为,另外,也存在一些activity的属性用以控制并改变这些行为:
alwaysRetainTaskState 属性
如果一个任务的根activity中此属性设置为“true”,则上述默认行为不会发生。任务将在很长的一段时间内保留它堆栈内的所有activity。
clearTaskOnLaunch属性
如果一个任务的根activity中此属性设置为“true”,则每当用户离开这个任务和返回它的时候,堆栈都会被清空至只留下rootactivity。换句话说,这是alwaysRetainTaskState的另一个极端。哪怕仅是过了一小会儿,用户回到任务时,也是见到它的初始状态。
finishOnTaskLaunch属性
这个属性与clearTaskOnLaunch属性相似,但它仅作用于单个的activity,而不是整个的task。而且它可以使任意activity都被清理,甚至根activity也不例外。当它设置为“true”的时候,此activity仅做为任务的一部分存在于当前回话中,一旦用户离开并再次回到这个任务,此activity将不复存在。
此外,还有别的方式从堆栈中移除一个activity。如果一个intent对象包含FLAG_ACTIVITY_CLEAR_TOP标记,而且目标任务的堆栈中已经存在了一个能够响应此intent的activity类型的实例。则这个实例之上的所有activity都将被清理以使它位于堆栈的顶部来对intent做出响应。如果此时指定的activity的加载模式为“standard”,则它本身也会从堆栈中移除,并加载一个新的实例来处理到来的intent。这是因为加载模式为“standard”的activity总会创建一个新实例来处理新的intent。
FLAG_ACTIVITY_CLEAR_TOP与FLAG_ACTIVITY_NEW_TASK经常合并使用。这时,这些标记提供了一种定位其它任务中现存的activity并将它们置于可以对intent做出响应的位置的方法。
当一个activity被指定一个“android.intent.action.MAIN”做为动作,以及“android.intent.category.LAUNCHER”做为类别的intent过滤器之后,它就被设置为一个任务的入口点。这样的过滤器设置会在应用程序加载器中为此activity显示一个图标和标签,以供用户加载任务或加载之后在任意时间回到这个任务。
第二个能力相当重要:用户必须可以离开一个任务,并在一段时间后返回它。出于这个考虑,加载模式被设定为“singleTask”和“singleInstance”的activity总是会初始化一个新任务,这样的activity仅能用于指定了一个MAIN和LAUNCHER过滤器的情况之下。我们来举例说明如果没指定过滤器的情况下会发生的事情:一个intent加载了一个“singleTask”的activity,初始化了一个新任务,用户在这个任务中花费了一些时间来完成工作。然后用户按下了HOME键。于是任务被要求转至后台并被主屏幕所掩盖。因为它并没有在应用程序加载器中显示图标,这将导致用户无法再返回它。
类似的困境也可由FLAG_ACTIVITY_NEW_TASK标记引起。如果此标记使一个activity启动了一个新任务继而用户按下了HOME键离开了它,则用户必须要有一些方法再次回到这个任务。一些实体(诸如通知管理器)总是在另外的任务中启动新activity,而不是做为它们自己的一部分,所以它们总是将FLAG_ACTIVITY_NEW_TASK标记包含在intent里面并传递给startActivity()。如果你写了一个能被外部实体使用这个标记调用的activity,你必须注意要给用户留一个返回这个被外部实体启动的任务的方法。
当你不想让用户再次返回一个activity的情况下,可以将 <activity> 元素的 finishOnTaskLaunch设置为“true”。参见下面的“清理堆栈”。
清理堆栈
如果用户离开一个任务很长一段时间,系统会清理该任务中除了根activity之外的所有activity。当用户再次回到这个任务的时候,除了只剩下初始化activity尚存之外,其余都跟用户上次离开它的时候一样。这样做的原因是:在一段时间之后,用户再次回到一个任务的时候,他们更期望放弃他们之前的所作所为,做些新的事情。
这些属于默认行为,另外,也存在一些activity的属性用以控制并改变这些行为:
alwaysRetainTaskState 属性
如果一个任务的根activity中此属性设置为“true”,则上述默认行为不会发生。任务将在很长的一段时间内保留它堆栈内的所有activity。
clearTaskOnLaunch属性
如果一个任务的根activity中此属性设置为“true”,则每当用户离开这个任务和返回它的时候,堆栈都会被清空至只留下rootactivity。换句话说,这是alwaysRetainTaskState的另一个极端。哪怕仅是过了一小会儿,用户回到任务时,也是见到它的初始状态。
finishOnTaskLaunch属性
这个属性与clearTaskOnLaunch属性相似,但它仅作用于单个的activity,而不是整个的task。而且它可以使任意activity都被清理,甚至根activity也不例外。当它设置为“true”的时候,此activity仅做为任务的一部分存在于当前回话中,一旦用户离开并再次回到这个任务,此activity将不复存在。
此外,还有别的方式从堆栈中移除一个activity。如果一个intent对象包含FLAG_ACTIVITY_CLEAR_TOP标记,而且目标任务的堆栈中已经存在了一个能够响应此intent的activity类型的实例。则这个实例之上的所有activity都将被清理以使它位于堆栈的顶部来对intent做出响应。如果此时指定的activity的加载模式为“standard”,则它本身也会从堆栈中移除,并加载一个新的实例来处理到来的intent。这是因为加载模式为“standard”的activity总会创建一个新实例来处理新的intent。
FLAG_ACTIVITY_CLEAR_TOP与FLAG_ACTIVITY_NEW_TASK经常合并使用。这时,这些标记提供了一种定位其它任务中现存的activity并将它们置于可以对intent做出响应的位置的方法。
发表评论
-
设置内存卡资源图片
2013-03-12 10:11 479String imageDir = Environment. ... -
android字体过长渐变效果
2013-01-30 15:59 663使用 android:singleLine="t ... -
自定义之checkbox
2013-01-08 09:16 613android中自定义checkbox大小和图片 (转) ... -
Android中Activity,View,Window之间的关系(转)
2012-12-03 09:11 11241.首先来看Activity中的attach()方法,在调用o ... -
Dialog的dismiss和cancel 区别 (转)
2012-12-03 09:13 1845Dialog的dismiss和cancel AlertDial ... -
android应用程序适配在不同的手机上(转)
2012-12-03 09:15 487如何将一个应用程序适 ... -
Android权限共享UID(转)
2012-12-03 09:16 543共享UID 安装在设备中 ... -
ViewPager+TabHost 实现选项卡页面间滑动(转)
2012-12-04 09:19 915转自http://flycatdeng.iteye.com/b ... -
android扫描商品条形码
2012-12-04 09:19 993(转自http://marshal.easymorse.com ... -
基于Android平台的NFC技术的应用实现 (转)
2012-12-04 09:20 1394转自http://1679554191.iteye.com/b ... -
Android API包名及包的功能的中文介绍
2012-11-30 09:38 971android 包含应用平台和在定义应用程序所用到and ... -
Android 自动解锁 KeyguardManager(键盘管理器)(转)
2012-11-30 09:39 931写一个Activity启动该服务即可,用一个线程开启服务, ... -
Android之Service与IntentService的比较 .
2012-11-30 09:41 676转自http://blog.csdn.net/zhf19890 ... -
AlarmManager的使用
2012-11-30 09:42 664AlarmManager的作用文档中的解释是:在特定的时刻为 ... -
ActivityGroup之生命周期
2012-12-04 09:20 781Activity的生命周期已经 ... -
ActivityGroup之切换activity
2012-12-04 09:20 660前言 在一个主界面中做Activity切换一般都会用T ... -
Android SurviceView的触控和轨迹球事件 .
2012-12-05 14:10 1054SurfaceView 的触控和轨迹球事件 1,改开始什 ... -
home键屏蔽
2012-12-05 14:11 6151. 在activity中加上这段代码(重写onAttache ... -
彻底删除某个APK的方法
2012-12-05 14:11 10591. 连接ADB, 执行adb remount 2. 执行a ... -
android常用命令
2012-12-05 14:11 844首先配置好环境变量,有两种方法 1,在path里面配置 sdk ...
相关推荐
选项卡堆栈器选项卡堆栈器是一个处理多个片段历史记录的Android库,就像在...当删除并还原了完整的堆栈(在Tab更改期间,或在旋转设备时进行系统清理期间)时,保存和还原机制使您可以使Fragments保持最新状态。 Tab S
清理堆栈 12 启动任务 12 进程和线程 13 进程 13 线程 14 远程过程调用 14 线程安全方法 15 组件生命周期 15 Activity生命周期 15 调用父类 16 服务生命周期 19 广播接收器生命周期 20 进程...
清理堆栈 13 启动任务 14 进程和线程 14 进程 15 线程 15 远程过程调用 15 线程安全方法 16 组件生命周期 17 Activity生命周期 17 调用父类 18 服务生命周期 21 广播接收器生命周期 22 进程与生命周期 ...
清理堆栈 13 启动任务 14 进程和线程 14 进程 15 线程 15 远程过程调用 15 线程安全方法 16 组件生命周期 17 Activity生命周期 17 调用父类 18 服务生命周期 21 广播接收器生命周期 22 进程与生命周期 22 用户界面...
12 清理堆栈 ......................................................................................................... 14 启动任务 ........................................................................
清理堆栈......................................................... 13 启动任务......................................................... 14 进程和线程.......................................................
清理堆栈 ............................................................................................................. 13 启动任务 ........................................................................
训练模型后,将其保存并导出到android应用程序,并使用模型作为概念验证和UI界面进行预测,以使用文本语音API讲出结果。 处理: 清理并合并数据 根据模型要求,通过将每个序列活动的固定长度序列(200个)作为...
清理堆栈.................................................................................................................. 13 启动任务.....................................................................
安装您可以简单地克隆项目并从您的准系统项目开始git clone git@github.com:WrathChaos/react-native-pure-boilerplate.git my-app-name清理和简单运行清理示例存储库中的文件,不要忘记安装依赖项rm -rf .git ...