> 文档中心 > Android基础#2:Android中的几个基本概念:4大组件,Process,Task

Android基础#2:Android中的几个基本概念:4大组件,Process,Task

       尽早了解一个系统的基本概念。-----箴言-----

本文介绍一些Android的基本概念:

1. Android apk文件:
Android应用的安装文件,以apk结尾,是Android应用程序的最终体现。事实上,也可以将它看做一个压缩文件,可以对其进行解压,就可以看到更多的文件内容。通常,可以通过应用商店进行下载安装。

下面,是一个apk文件解压以及解压后的目录结构:

aibook@aibookdeMacBook-Pro debug % lsapp-debug.apkoutput-metadata.jsonaibook@aibookdeMacBook-Pro debug % unzip app-debug.apk -d appaibook@aibookdeMacBook-Pro debug %lsappapp-debug.apkoutput-metadata.jsonaibook@aibookdeMacBook-Pro debug % cd appaibook@aibookdeMacBook-Pro app % lsAndroidManifest.xmlclasses.dexresources.arscMETA-INFres

 其中,classes.dex就是我们说的Dalvik可执行文件。

res目录存放资源文件;

AndroidManifest.xml是清单文件,记录了应用程序的一些属性,权限,以及需要的Activity,service等组件;

META-INF:签名相关文件所在目录。

2. Android四大组件:

(1)Activity:
Android程序设计中的四大组件之一,用于与用户进行交互。它负责创建window,用户就可以通过布局在window上的view看到具体的界面。
Activity是有自己的生命周期的:

(2)Service:
Service是Android四大组件中的又一个组件,是Android中实现程序后台运行的解决方案,他非常适合是去执行那些不需要和用户交互而且还要长期运行的任务。Service的运行不依赖于任何用户界面,即使程序被切换到后台,或者用户打开了另一个应用程序,服务仍然能够保持独立运行。不过需要注意的是,服务并不是运行在一个独立的进程当中,而是依赖于创建服务时所在的应用程序进程。当某个应用程序被杀掉时,所有依赖该进程的服务也会停止运行。service分为两种:

  第一种,started(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于started状态。
  第二种,bound(绑定):当应用程序组件调用bindService()方法绑定到服务时,服务处于bound状态。

(3)ContentProvider:

Android提供了ContentProvider,可以把一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。

ContentProvider实现数据共享,只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处是统一数据访问方式。

(4)BroadcastReceiver:

Broadcast receiver,广播接收器,你的应用可以使用它对外部事件进行过滤,只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力,例如闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。

广播接收者的注册有两种方法,分别是程序动态注册和AndroidManifest文件中进行静态注册。

动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身未启动,该app订阅的广播在触发时也会对它起作用。

3. Android进程Process:

Linux操作系统中,有进程process的概念,Anroid底层是基于Linux的,在Android应用程序中,通常,一个应用程序就是一个process。
作为用户的应用程序在运行期间的体现,Android process运行在用户态。
Android 的 process可以分为:foreground process、visible process、service process、background process 和 empty process。

4. Android中的task:

简单说task就是一些相关联的activity的集合,但activity之间不一定非得相关联。当我们按home键旁边那个方形键(recent-apps)时,屏幕上展示的就是一个个task。

5. Android中UI相关的概念:

(1)Window和WindowManagerService(WMS):
屏幕上的某块显示区域,用来承载View。window是有WMS来管理的,WMS是Android框架层的一个服务进程,主要作用就是管理window。
(2)Surface和SurfaceFlinger:Surface对应一块屏幕缓冲区,每个window 对应一个 Surface。而SurfaceFlinger是Android的一个服务进程,负责管理 Surface。
(3)Canvas:提供了一系列绘图接口,用来在 Surface 上进行绘制操作。
(4)View:视图,就是用户真正能看到的控件,例如,按钮,输入框,复选框等。

通过WindowManagerService,我们就可以知道当前的屏幕有哪些显示出来的Window,哪些被隐藏的Window,或哪些被半遮盖的 Window。而因为每个Window都对应了一个屏幕缓冲区中的值(Surface)。 SurfaceFlinger 就会根据当前的所有存在的 Surface 计算出一个适配当前屏幕的缓冲区的值,然后把它渲染出来。