android体系结构介绍:如图:
l 应用程序(application)
l 应用程序框架(Application Framework)
l 各种库和android运行环境
l 操作层OS
Ø 应用程序(application):android的应用程序通常涉及用户界面和交互;
Ø 应用程序框架(application Framework):
1. 一组view(UI组件):这些UI组件包括List、textbox、button;
2. Content Provider:提供一种机制,通过这个机制应用程序可是实现数据库共享和互访;
3. Resourse Manager:负责管理非代码的访问,如图片、xml以及国际化资源文件;
4. Notification Manager:让程序将警示信息显示在状态栏上;
5. Activity Manager:管理着应用程序的生命周期,提供了应用程序页面的退出机制,一个应用程序由多个页面你组成,而每个页面的单位就是Activity,android应用程序是由多个activity的交互构成;
Ø 库(Libraries)和运行环境(Run Time):
1. 系统C库:一个从BSD 继承来的标准C系统函数库(LibC),他是专门基于嵌入式Linux的设备定制的;
2. 媒体库:基于packet Video OpenCORE,该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件;
3. Surface Manager:对显示子系统的管理,并且为多个应用提供了2D和3D图层的无缝融合;
4. Lib WebCore:一个最新的web浏览器引擎, 用来支持android浏览器和一个可嵌入的web试图;
5. SGL:底层的2D图引擎;
6. 3D libraries:基于openGL ES 1.0 apis实现,该库可以用硬件3d加速或者使用高度优化的3D软加速;
7. FreeType:位图(bitmap)和vector字体显示;
8. Sqlite:关系型数据库;
每个android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例,Dalvik被设计成一个设备,可以同时高效的运行多个虚拟机设备。Dalvik虚拟机执行的(.dex)Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经过由Java 编译器,然后通过sdk的“dx”工具转化成dex格式,有虚拟机执行。
Android应用程序介绍:
一般android应用程序包括以下四个部分:
l Activity
l Broadcast Intent Receiver
l Service
l Content Provider
1. Activity介绍:
Activity一般代表手机屏幕的一屏,相当于浏览器的一个页面。当打开一个屏幕时,之前的那一个屏幕会被置为暂停状态,并且压入历史堆栈中,用户可以通过回退操作返回到以前打开过的屏幕。
开发时需要选择行的移除没有必要保留的屏幕,因为打开后的屏幕会保存在堆栈中
Android的生命周期:即“产生、运行、销毁”
Intent和Intent Filter介绍:一个Intent就是一次对将要执行的操作的抽象描述,通过Intent可以在多个Activity之间进行跳转,Intent两个最重要的部分是动作(action)和动作对应的数据,典型的动作类型有,MAIN、view、pick、edit等,而动作对应的数据则以URI的形式表示;例如有两个activity分别为A和B,要从A跳转到B可以这样写
Intent intent = new Intent(A.this, B.class);
startActivity(intent);
与Intent有关联的类叫做Intent Filters,如果Intent是一个请求,一个Intent Filters描述改组件所能相应Activity请求的能力。
2. Broadcast Intent Receiver介绍:
可以使用BroadcastReceiver来让应用对外一个外部的事件作出响应。BroadcastReceiver通过NotificationManager来通知用户这些事情发生了,BroadcastReceiver注册的有两种方式,一种是可以在AndroidManifest.xml中注册,另一种可以在运行时的代码中使用Context.registerReceiver()进行注册。用户还可以通过Context.sendBroadcast()将他们自己的intent broadcasts广播给其他的应用程序。
3. Service介绍:
Service是一种程序,它可以运行很长的时间,相当于后台的一个服务,通过startService(Intent service)可以启动一个Service,通过Context.bindService()可以绑定一个Service
4. Content Provider介绍:
数据在android当中是私有的,这些数据包括文件数据和数据库数据以及其他类型的一些数据。两个程序之间数据的交互是通过Content Provider来实现,一个Content Provider实现了一组标准的接口,能够让其他应用保存或读取此Content Provider的各种数据类型。所以一个程序可以通过实现以个Content Provider的抽象接口将自己的数据暴露在外面,实现常见的接口有:
Query(URI,String[],String,String[],String):通过关键字查询;
Insert(Uri,ContentValues):将一组数据插入到指定的地方 ;
Update(Uri,ContentValues,String,String[]):更新数据;
Delete(Uri, String, Stringp[]) :删除数据;