应用程序的基本结构模块
Activity应用程序的表示层。应用程序中的每一个UI都是通过Activity类的一个或多个扩展实现的。Activity使用Fragment和视图来布局和显示信息,以及响应用户动作。Activity相当于桌面开发环境中Form。
Service应用程序中不可见的工作者。Service组件在运行时没有UI,可以更新数据和Activity、触发通知和广播Intent。用来执行一些运行时间长的任务或者不用和用户交互的任务。
Content Provider一个可共享的持久数据存储器。用来管理和持久化应用程序数据,通常会与SQL数据库交互。
是应用程序之间共享数据的首选方法。
Intent一个强大的应用程序间的消息传递框架。Intent一个用来停止和启动Activity和Service,在系统范围内或向目标Activity、Service或Broadcast Receiver广播消息,以及请求对特定的一条数据执行操作。
Broadcast ReceiverIntent监听器。使应用程序可以监听到那些匹配指定过滤标准的Intent广播。会自动地启动应用程序来响应某个收到的Intent,是事件驱动应用程序的最佳选择。
Widget添加到设备主屏幕的可视化应用程序组件。是Broadcast Receiver的特殊变体。可用于创建动态的交互式应用程序组件。
Notification允许向用户发送信号,但却不会过分的吸引他们的注意力或者打断他们当前的Activity。它们是应用程序不可见或者不活动时(特别是Service和Broadcast Receiver)吸引用户注意的首选方法。
应用程序的生命周期
Android应用程序不能控制自己的生命周期。默认情况下,每个Android应用程序都是通过自己的进程运行的,每个进程都运行在独立的Dalvik实例中。每个应用程序的内存和进程管理都是由运行时专门进行处理的。
Active进程:正在和用户进行交互的应用程序进程
一般包括:处于活动状态的Activity
正在执行onReceive事件处理程序的Broadcast Receiver
正在执行onStart、onCreate、onDestory事件处理程序的Service
正在运行且已被标记为前台运行的Service
可见进程:即可见但并非活动的进程,指那些驻留“可见Activity”的进程。可见的Activity能被用
户看见,但它们并不在前台运行或者能对用户事件做出反应。
启动Service进程:已经启动的Service的进程。后台Service由于没有直接和用户交互,它们的优先
级要比可见Activity或前台Service低一些,但它们仍被认为是前台进程。
后台进程:不可见、并且没有任何在运行的Service的Activity进程。
空进程:为了提高系统整体性能,Android经常在应用程序的生存期结束后仍把它们保存在内存中,
Android通过维护这个缓存来减少应用程序被再次启动时的启动时间。
Android Application
每次应用程序运行时,应用程序的Application类都保持实例化状态。与Activity不同,配置改变并不会导致应用程序重启。通过扩展Application类可以完成以下三项工作:
对Android运行时广播的应用程序级时间(如低内存)做出响应;
在应用程序组件之间传递对象;
管理和维护多个应用程序组件使用的资源。
Application的实现在本质上是单态的,当在Manifest中注册了Application后,它会在创建应用程序进程的时候
被实例化。
应用程序的生命周期事件:
public void onCreate() 在创建应用程序时调用,可以重写该方法来实例化应用程序单态,以及创建和实例化任何应用程序状态变量或共享资源。
public void onLowMemory() 当系统处于资源匮乏状态时,具有良好行为的应用程序可以释放额外的内存。该方法一般只会在后台进程已经终止,但前台应用程序仍然缺少内存时调用。可以重写该方法来清空缓存或者释放不必要的资源。
public void onTrimMemory(intlevel) 当运行时决定当前应用程序应该尝试减少其内存开销时(通常在它进入后台时)调用(作为onLowMemory的一个特定于应用程序的替代选择,在Android 4.0中引入)。它包含一个level参数,用于提供请求的上下文。
public void onConfigurationChanged(Configuration newConfig) 与Activity不同,在配置改变时,应用程序对象不会被终止和重启。如果应用程序使用的值依赖于特定的配置,则可重写该方法来重新加载这些值,或者用于处理应用程序级别的配置改变。