background image

Android 应用程序模块详解

在大多数操作系统里,存在独立的一个

1 对 1 的可执行文件(如 Windows 里的 exe 文

件),

 它可以产生进程,并能和界面图标、应用进行用户交互。但在 Android 里,这是不固

定的,理解将这些分散的部分如何进行组合是非常重要的。

由于

Android 这种可灵活变通的,在实现一个应用不同部分时你需要理解一些基础技

术:

一个

android 包 (简称 .apk ) ,里面包含应用程序的代码以及资源。这是一个应用发布,

用户能下载并安装他们设备上的文件。

一个任务

 ,通常用户能当它为一个“应用程序”来启动:通常在桌面上会有一个图标可

以来启动任务,这是一个上层的应用,可以将你的任务切换到前台来。

一个进程

 是一个底层的代码运行级别的核心进程。通常.apk 包里所有代码运行在一个

进程里,一个进程对于一个

.apk 包;然而, 进程 标签常用来改变代码运行的位置,可以是

 

全部的

.apk 包 或者是独立的 活动, 接收器, 服务, 或者 提供器组件。

任务

记住关键的一点:当用户看到的

“应用”,无论实际是如何处理的,它都是一个任务。如

果你仅仅通过一些活动来创建一个

.apk 包,其中有一个肯定是上层入口(通过动作的

intent-filter 以及分类 android.intent.category.LAUNCHER),然后你的.apk 包就创建了一个
单独任务,无论你启动哪个活动都会是这个任务的一部分。

一个任务,从使用者的观点,他是一个应用程序;对开发者来讲,它是贯穿活动着任

务的一个或者多个视图,或者一个活动栈。当设置

Intent.FLAG_ACTIVITY_NEW_TASK 标

志启动一个活动意图时,任务就被创建了;这个意图被用作任务的根用途,定义区分哪个
任务。如果活动启动时没有这个标记将被运行在同一个任务里(除非你的活动以特殊模式被
启动,这个后面会讨论)。如果你使用

 FLAG_ACTIVITY_NEW_TASK 标记并且这个意图

的任务已经启动,任务将被切换到前台而不是重新加载。

FLAG_ACTIVITY_NEW_TASK 必须小心使用:在用户看来,一个新的应用程序由此

启动。如果这不是你期望的,你想要创建一个新的任务。另外,如果用户需要从桌面退出到
他原来的地方然后使用同样的意图打开一个新的任务,你需要使用新的任务标记。否则,如
果用户在你刚启动的任务里按桌面(

HOME)键,而不是退出(BACK)键,你的任务以

及任务的活动将被放在桌面程序的后面,没有办法再切换过去。

任务亲和力(

Affinities)