图 2.2 Activity状态变换路径图
从图2.2可以看出,Activity有三个关键的循环:
A 活动的整个生命期:从首次调用onCreate(Bundle)开始,到最终调用onDestroy()结束。在onCreate()中进行所有初始化,在onDestroy()时进行清理工作,释放资源。
B 活动的可见生命期:从调用onStart()开始,到onStop()被调用为止。在这段时间内,即使活动不与用户进行交互,用户也可以在屏幕上看到它。在这两个方法调用之间,可以文护活动显示给用户的资源。onStart()和onStop()方法可以多次调用,因为活动随时可以在可见和隐藏之间进行转换。
C 活动的后台生命期:从调用onResume()开始,到onPause()被调用为止。在这段时间内活动处于其它所有活动之前,并与用户进行交互。一个活动可以不断在resumed状态和paused状态之间变换[4]。
(2) 活动之间的切换
Android使用了Intent类来实现活动之间的切换工作。Intent负责对应用中一次操作的动作、动作涉及的数据和附加数据进行描述。根据Intent的描述,负责找到对应的组件,将Intent传递给调用的组件并完成组件的调用。因此,Intent起着一种媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。在应用中,我们可以以两种形式来使用Intent:直接Intent,指定了component属性的Intent,通过指定具体的组件类,通知应用启动对应的组件。间接Intent,没有指定comonent属性的Intent,则需要包含足够的信息,这样系统才能根据这些信息,在所有的可用组件中,确定满足此Intent的组件。
2.5.2 BroadcastReceiver
在Android 中,Broadcast 是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver 是对发送出来的Broadcast进行过滤接受并响应的一类组件。可以使用BroadcastReceiver 来让应用对一个外部的事件做出响应。这是非常有意思的,例如,当电话呼入这个外部事件到来的时候,可以利用BroadcastReceiver 进行处理。例如,当下载一个程序成功完成的时候,仍然可以利用BroadcastReceiver 进行处理。BroadcastReceiver不能生成UI,也就是说对于用户来说不是透明的,用户是看不到的。BroadcastReceiver通过NotificationManager 来通知用户这些事情发生了。BroadcastReceiver 既可以在AndroidManifest.xml 中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册。只要是注册了,当事件来临的时候,即使程序没有启动,系统也在需要的时候启动程序。各种应用还可以通过使用Context.sendBroadcast () 将它们自己的intent broadcasts广播给其他应用程序。
2.5.3 Service
Service是提供连续信息的应用程序。它是运行于应用程序后台的服务,在用户进行其它活动的时候,这个服务将一直运行在基于Android平台的即时通讯系统的研究与实现后台直到用户停止该服务或服务运行结束。
2.5.4 Content Provider
SQLiteDataBase提供结构化的数据存储。它是一款轻型免费的且开源的数据库,它的设计目标是嵌入式的,它占用的资源非常低、需要的内存空间少、处理速度比较快和支持事务处理功能等。
Content Provider应用程序能够将它们的数据保存到文件、SQL数据库和其它的存储设备中,并可以同过URI地址和其它应用程序共享。当应用程序需要使用存储设备中的数据时,可以使用Content Provider来完成。使用Content Provider能够灵活的替换底层使用的存储设备,使开发者可以专注于应用逻辑的开发,不用考虑底层存储设备的细节,从而使应用系统具有良好的数据。 Android平台手机文本阅读软件的开发与设计(7):http://www.751com.cn/jisuanji/lunwen_1192.html