Android Activity进行全解析

移动开发 Android
如果一个用户长时间没有使用一个任务,系统会请空这个任务中根以外的Android Activity,当用户再次使用此程序的时候。

Android Activity集成开发环境包括许多新的和改进的用于提高工作效率的功能。IDE 还进行了重新设计,从而向开发人员提供对.NET Framework 组件的直接访问,大大减轻了开发人员的工作压力。

只有最开始的activity显示出来。这样做的原因是:当用户很长时间以后回来的时候,它倾向于重新开始工作,而不是接着上次的工作做。当然,这是默认的模式。activity有一些属性可以控制请空的动作。当任务的根acitvity的此属性设置为 "true" 的时候。

无论用户何时返回应用程序,程序都会请空队列。从另一个角度说,这个属性和alwaysRetainTaskState属性完全相反。即使离开一会,用户也会被导航到初始状态。这个属性有些像clearTaskOnLaunch, 但是它是针对某个activity而非整个任务的。它可以清除任何Android Activity,当然包括任务堆栈的根activity

当此属性设置为"true" 的时候,此activity只在用户当前会话中显示,当用户离开再回来的时候,此activity已经被清除。有另外一种方式来请空任务。如果intent含有 FLAG_ACTIVITY_CLEAR_TOP 节点,并且目标任务已经有一个指定activity的实例来处理这个intent了。

那么这个activity顶上的节点将被全部清除,这个activity的实例就位于任务堆栈的顶部了。如果指定的activity设置为"standard",。它将从任务中移除,建立一个新的实例来响应此intent。因为启动模式设置为 "standard"的时候,会建立一个新的实例来响应intent。

FLAG_ACTIVITY_CLEAR_TOP 经常和FLAG_ACTIVITY_NEW_TASK.一起使用。当他们一起使用的时候,可以定位到另外一个任务中已经存在的activity上,使得这个acitivity响应intent。

怎样把一个activity设置为整个任务的入口呢?可以设置一个intent filter: "android.intent.action.MAIN" 作为默认动作;"android.intent.category.LAUNCHER" 作为类别。(是 Intent Filters 章节的例子)。这种类型的的filter对应的Android Activity的icon和label显示在任务中,这样用户可以方便的回到任务

第二个能力尤其重要,用户必须可以离开任务,并且重返任务。因此, "singleTask" 和 "singleInstance"这2个启动模式必须用在含有 MAIN 和 LAUNCHER filter的activity中。想象一下,如果不加这2个filter会怎样?一个intent请求"singleTask" 的activity,初始化了一个新的任务,用户操作了一会这个任务。

然后用户点击“HOME”键。现在这个任务就被HOME窗体覆盖了。但是因为这个任务不能在application launcher(注:类似于进程管理器)里面看到,因此用户没有办法打开它

 CTIVITY_NEW_TASK 标志也有同样的问题。这个标志将使得activity在一个新的任务执行,当用户点击HOME 键离开任务的时候,必须能让用户回到这个任务。其他的一些机制(如通知管理器)经常在外部的任务开启某个activity,而不是activity所在的任务本身,因此必须在intent触发 startActivity()方法时使用FLAG_ACTIVITY_NEW_TASK 标记。

如果你有一个可以使用这个标记并且可以被外部调用的activity,要注意使得用户可以重新回到这个任务。当你不想用户重新回到任务的时候,将 <activity> 节点的finishOnTaskLaunch 设置为"true". 请参见前面的 Clearing the stack。

【编辑推荐】

  1. Android应用程序组建原理深入剖析 Android SMS短信服务相关概念简述
  2.  
  3. PythonAndroid数据库相关代码解读
  4. PythonAndroid安装卸载程序具体操作方法解析
  5. Android应用程序的四个关键点
责任编辑:chenqingxiang 来源: 51CTO.com
相关推荐

2010-03-03 14:51:02

Android手机

2010-03-04 16:38:37

Android开发技巧

2010-02-05 15:22:14

2010-02-07 10:21:27

Android应用程序

2010-02-06 16:26:30

Android开源

2010-02-06 10:42:41

Android Ser生命周期

2011-06-02 11:13:10

Android Activity

2010-03-01 14:28:46

Python进程

2010-02-22 10:18:29

Python代码

2010-03-04 17:50:42

Android操作系统

2016-12-02 19:00:13

Android FraAndroid

2010-02-23 16:46:27

Python设计语言

2010-02-06 09:38:42

Android调用服务

2010-03-02 15:51:05

Android手机

2010-02-06 17:17:17

Android手机

2010-02-05 14:54:56

Android UI

2010-02-23 15:29:43

Python 编辑器

2010-03-03 13:43:46

Android手机系统

2010-02-05 14:34:11

Android操作系统

2010-07-13 09:08:27

Widget开发
点赞
收藏

51CTO技术栈公众号