初学Android,对Android的知识进行整理,以下主要是有关Android系统架构分析 和 Android应用程序组件介绍

1Android架构分析

Android是由Google公司开发的一款基于Linux平台的操作系统,之所以受到广泛使用是在于此系统的开放性和免费服务。它是包括操作系统、中间架构层以及应用程序的软件叠层架构。Android系统架构和其操作系统一样,采用了分层的架构,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层


1.1应用程序层

       Android平台不仅是操作系统,还装配有一个核心应用程序集合,例如日常使用的日历、短信客户端、电子邮件、电话拨号、地图、浏览器等其他设置的程序[4]。较其他手机操作系统相比,这些程序具有更高的灵活性和个性化,开发者可以进行自由的替换成自己所需的应用程序。

1.2

       应用程序框架层提供开放给开发者进行编制应用程序的APIs框架,意于简化组件的重用。开发者在服从框架执行的安全限制前提下可任意使用提供 的功能,例如可使用访问位置信息、运行后台服务、设置闹钟等功能。所有应用程序都包括视图、内容提供者、资源管理者、通知管理者及活动管理者。

       视图(View):包括列表、网格、文本框、按钮等可扩展的视图集合。

      内容提供者(Content Providers):提供访问别的应用程序数据或共享本应用程序的数据。

      资源管理器(Resource Manager):提供访问非代码资源,如本地化字符串、图形和布局文件。

      消息管理器(Notificaition Manager):应用程序状态栏显示信息提示或通知信息。

      活动管理器(Activty Manager):管理应用程序生命周期,提供通用的导航回退功能。

1.3

       系统运行库层包括Android运行时和Libraries两个部分。

      (1) Android运行时

      应用程序是基于Java编程语言进行编写的,可执行的程序在运行时分为运行时核心库和Dalvik虚拟机。运行时核心库提供大部分核心库中可用的功能,也包含Android的一些核心API。Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理。Dalvik虚拟机与Java虚拟机有所区别,体现在每一个应用程序都有一个属于自己的Dalvik虚拟机,这使系统在运行时程序间相互的影响力降低,达到系统优化的好处。

      (2) Libraries

      Android包含一个供各组件使用的C/C++库集合,开发者可以通过Android应用程序框架进行使用各功能。库集合分别包括系统C库、媒体库、界面管理库、SQLite、LibWebCore、SGL、FreeType以及3D库。各组件通过使用这些核心库来支持其应用框架。

1.4

      Linux内核层作为硬件和软件之间的抽象层,它基于Linux2.6为上层提供统一的核心系统服务。其服务如安全性、内存管理、进程管理、网路协议以及驱动模型都依赖于Linux内核。硬件和软件进行分层可以屏蔽上下层之间的差异,具有高内聚、低耦合的特点。

2Android应用程序组件

      通常,一个完整的Android应用程序是由Activty、Intent Receiver、Service、Content Provider四部分构成[5]。在使用这些构造块之前,需在配置文件中进行注册,配置组件的必要条件及功能后,方可在程序中进行引用。这4种基本构造块根据开发者需求进行组合,从而形成可执行的程序。


     现在,对Activty、Intent Receiver、Service、Content Provider四大组件进行一些说明。

      (1) Activty

      Activty属于Android应用程序中最基本的组件。每一个Activity都是从基类中继承而来的独立类。活动类会显示由几个Views控件组成的用户接口,并对事件做出响应。在应用程序中,我们所看到的每个单独的屏幕就属于一个Activity。应用程序中往往有多个屏幕,当由一个屏幕切换到新的屏幕时,前一个屏幕将会暂停而保存在历史栈中。用户若想要回到之前的屏幕,则通过回退即可返回。其中,Android使用Intent这个特殊类,实现Activity之间的移动。

      (2) Intent Receiver

      Acivity之间进行切换需要调用Android专有类Intent。它用来描述程序应用想要做什么。Intent数据结构最重要的两个组成部分是动作和动作对应的数据。典型的动有:Main、View、Pick、Edit等,而动作对应的数据则以Uri的形式进行表示。

      与之相关的是IntentFilter这个类,它描述一个活动对应操作的Intent。当Activity调用startActivity(Intent myIntent)方法时,执行程序将会从IntentFilter中进行查找,从而找到匹配的Intent对应的Activity。

     (3) Service

      Service服务类似于Windows系统中的Windows服务,是一种有着较长生命周期且没有用户界面的应用程序。一个应用组件可以启动Service,并且当用户进行应用场景切换时,Service将会持续在后台运行。另外,一个组件可以绑定到一个Service上与之进行交互。例如,一个Service在处理播放音乐、网络操作、文件I/O等操作时,Service都是在后台进行的。

      Service有启动和绑定两种状态。在应用程序中,启动一个服务可调用startService()方法。通常started状态的Service仅限于执行单任务并且不返回任何结果给启动者。还有一种绑定状态的Service则是通过bindService()方法进行启动,此Service提供一个允许组件和Service进行交互的接口,可实现发送请求、获取返回结果及通过跨进程通信来交互等功能。

      (4) Content Provider

      内容提供者相当于一个提供数据的接口,主要用于对外共享数据,也就是

      通过内容提供者将应用中的数据共享给其他应用访问。当两个应用之间需要共享数据时,内容提供者将会按标准开放一个接口,使应用可以获取到数据。数据可以存储于文件系统、SQLite数据库或其他方式。Android中提供了一些主要数据类型的Content Provider,比如音频、视频、图片和私人通讯录等,可在android.provider包中找到,并且在获取适当的读取权限后可以查询它所包含的数据。

  初学android,对学习的知识仅进行整理归纳。