Android大致可以分为四层架构:Linux内核层、系统运行库层、应用框架层、应用层。
- Linux内核层:Android系统基于Linux内核,这一层为Android设备的硬件提供驱动,如显卡驱动、音频驱动、相机驱动、蓝牙驱动、WiFi驱动、电源管理等。
- 系统运行库层:通过一些C/C++库为Android提供特性支持。如SQLite提供数据库支持,OpenGL提供3D绘图支持,Webkit库提供浏览器内核支持。
- 应用框架层:提供构建应用程序时的API。
- 应用层:安装在手机上的应用程序属于这一层。
2. Android应用开发特色 1. 四大组件
Android系统四大组件分别是活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供器(Content Provider)。
在Android应用中看得到的东西都放在活动中。
服务在后台运行,即使用户退出了应用,服务仍可以运行。
广播接收器允许应用接收来自各处的广播信息,如电话、短信等,开发的应用同样可以向外发出广播信息。
内容提供器为应用程序之间共享数据提供了可能,比如想要读取电话簿中的联系人,就需要通过内容提供器实现。
2. 丰富的系统控件Android系统提供了丰富的系统控件,同样也支持定制控件。
3. SQLite数据库Android自带轻量级、运算速度极快的嵌入式关系型数据库。支持标准SQL语法,同时还提供了封装好的API供开发者调用。
4. 强大的多媒体Android提供了丰富的多媒体服务,如音乐、视频等,并都可以在程序中通过代码控制。
5. 地理位置定位Android设备内置GPS,支持定位功能。
2. 活动(Activity) 2.1.1 返回栈
Android使用任务(Task)管理活动,一个任务就是一组存放在栈里的活动集合,这个栈称为返回栈。
图2-22展示了返回栈如何管理活动出入栈操作。
2.1.2 活动状态活动在生命周期中最多可能有4种状态。
- 运行状态,活动位于栈顶。
- 暂停状态,活动不在栈顶,但仍然可见。
- 停止状态,活动不在栈顶,并且完全不可见。
- 销毁状态,活动在返回栈中被移除。
Activity类中有7个回调方法,覆盖了活动的整个生命周期。
- onCreate()。每个活动中都重写这个方法,在活动第一次被创建时调用。需要在这个方法中完成活动的初始化操作,如加载布局、绑定事件。
- onStart()。这个方法在活动由不可见变为可见的时候调用。
- onResume()。这个方法在活动准备好和用户进行交互的时候调用。此时的活动一定位于返回栈的栈顶,并且处于运行状态。
- onPause()。这个方法在系统准备去启动或者恢复另一个活动的时候调用。
- onStop()。这个方法在活动完全不可见的时候调用。
- onDestroy()。这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。
- onRestart()。这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。
除onRestart()方法外,其他方法两两相对,从而活动分为3种生存期。
- 完整生存期。活动在onCreate()方法和onDestroy()方法之间所经历的,就是完整生存期。
- 可见生存期。活动在onStart()方法和onStop()方法之间所经历的,就是可见生存期。
- 前台生存期。活动在onResume()方法和onPause()方法之间所经历的就是前台生存期。
图2-23为官方提供的活动生命周期示意图。
2.1.4 活动启动模式启动模式一共有4种,standard、singleTop、singleTask和singleInstance, 可以在AndroidManifest.xml中通过给标签指定android:launchMode属性来选择启动模式。
standard
活动的默认的启动模式,每当启动一个新活动,它就会在返回栈中入栈,并处于栈顶位置。系统不会在乎新活动是否已经在返回栈中存在,每次启动都会创建一个新的实例。
standard模式原理示意图:
singleTop
启动活动时,如果栈顶活动就是该活动,则直接使用它,不需要创建新的实例。
singleTop模式的原理示意图:
singleTask
启动活动时,都会在返回栈中检查是否存在该活动的实例,如果发现存在直接使用该实例,并把在这个活动之上的活动全部出栈,如果没有发现就会创建一个新的活动实例。
singleTask模式的原理示意图:
singleInstance
指定为singleInstance模式的活动会启用一个新的返回栈来管理这个活动。在这种模式下会有一个单独的返回栈管理这个活动,不管是哪个应用程序来访问这个活动,都共用同一个返回栈,解决了共享活动实例的问题。



