一、Android系统架构图
1.Linux kernel(内核)
2.Android runtime(运行库)
3.Libraries
其包含一个c/c++库的集合:
(1
)系统C
库——标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备。
(2
)媒体库——
基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG。
(3
)界面管理——
管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层。
(4
)LibWebCore——
新式的Web浏览器引擎,驱动Android浏览器和内嵌的web视图。
(5
)SGL——
基本的2D图形引擎。
(6
)3D
库——基于OpenGL
ES 1.0 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅。
(7
)FreeType ——
位图和矢量字体渲染。
(8
)SQLite ——
所有应用程序都可以使用的强大而轻量级的关系数据库引擎。
4.application framework(应用程序框架)
(1
)、视图(View
)——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器。
(2
)、内容提供者(Content Providers
)——使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据。
(3
)、资源管理器(Resource Manager
)——提供访问非代码资源,如本地化字符串、图形和布局文件。
(4
)、通知管理器(Notification Manager
)——使所有的应用程序能够在状态栏显示自定义警告。
(5
)、活动管理器(ActivityManager
)——管理应用程序生命周期,提供通用的导航回退功能。
5.applications
核心应用程序包,包括E-mail客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等
二、四类核心的组件类:
1.Activity
一个Activity通常就是一个单独的屏幕。
每个Activity都被实现为一个单独的类,并继承与Activity这个基类。
Activity类将会显示由几个VIEWS控件组成的用户接口,并对事件作出响应。
通过startActivity()方法可以调用Acitvitty,而打开Activity的条件被封装在Intent中。
2.Service
一个Service是一种长生命周期的、没有用户界面的程序。
其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行。
Service两种状态:
启动——其他应用组件可以通过Context.startService()启动一个Service。(一旦启动,在后台运行直到Service运行结束)
绑定——(多个)组件可通过调用Context.bindService()连接到一个Service上(一个绑定的service提供一个允许组件与service交互的接口,可以发送请求、获取返回结果,还可以通过夸进程通信来交互)
调用unbind()方法时,这个service就会被销毁了。
对比:启动态的Service即使启动它的应用组件已经被销毁了,它仍会在后台运行直至结束。而被绑定的Service当绑定的组件销毁后,对应的service也就被kill了。
3.Broadcast Receiver
实现系统广播的组件
4.ContentPovider
实现不同组件间数据共享