一、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
实现不同组件间数据共享