1.android的系统架构
linux内核:负责各种硬件的驱动,例如显示、蓝牙、相机、音频、usb等。
本机库:位于linux内核层上面一层,用C或C++编写,重要的包括界面管理、图形、媒体解码器、SQL数据库、浏览器引擎。
android运行时:dalvik虚拟机和java核心库,是针对手机优化的一个java虚拟机的实现。
应用程序框架:位于本机库和android运行时上面,提供了创建应用所需的各种高级构建块。包括活动管理器、内容提供者、资源管理器、位置管理器、通知管理器。
应用程序:位于最高层,是用户可以直接看到的一层。
2.程序的生命周期
android中有一个前台应用程序,就是用户开机时看到的第一个应用程序,它通常显示时间、背景图片和滚动列表。用户通过应用滚动列表可以运行其它应用程序,此时android会启动该程序并将其置于前台,同一个程序也可以打开多个窗口,但同一时刻只有一个窗口可被用户操作。所有这些程序和窗口都被系统的活动管理器记录在应用程序栈中,这个栈由上述的活动管理器管理。用户可以随时按back按钮返回到栈中的上一个窗口。工作方式类似web浏览器中的历史功能,与windows的窗口工作方式不同。
每个用户界面窗口都是通过activity类表示的,而每个活动都有自己的生命周期。而一个应用程序包括一个或多个activity以及包含这些活动的linux进程。但是activity的生命周期和进程的生命周期没有关系。进程只是各种activity可以随意使用的一个容器。每个activity可以有以上多种状态,开发人员不能控制程序处于哪种状态,这由系统管理。但是系统会通过类似onXXX()的方法调用通知开发人员,开发人员只需要在收到通知后进行相应的处理即可。在某些情况下,onPause()方法可能是activity中调用的最后一个方法,所以应该在该方法中保持下次要继续使用的任何数据。
3.构建块
activity:一个活动就是一个用户界面屏幕。应用程序可以有多个活动,作为应用程序生命周期的一部分,每个activity都要保存自己的状态,以便后续还原这些状态。
intent:意图是一种描述具体动作的机制,例如“拍照”、“打电话”等。几乎所有的用户操作都会经过意图这个阶段,其结果是使用对应的activity来处理该意图。
服务:服务是在后台运行的任务,无需用户直接与其交互,例如音乐播放器。所以执行音乐播放的代码应该在某个服务中。之后,另一个活动可能会绑定到该服务上,告诉该服务切换音轨或者停止播放。android内置了很多服务,以及很多可轻松访问这些服务的API。
内容提供者:是封装在自定义API中的一组数据,可以读取该数据和向API中写入数据。这是应用程序之间共享全局数据的最佳方式。