程序自己定义广播事件,比如定义这样一个广播事件,让其它的应用知道某些数据已经下载完毕了可以使用了。
一个应用可以有任意多个BroadcastReceiver来对它所关心的广播事件进行监听并作出反应,所有的receiver都继承自BroadcastReceiver基类。BroadcastReceiver不显示在用户界面上,然而,它可以启动一个Activity来作为它接收到的信息的一种反应,或者它可以使用NotificationManager来提示用户,Notifications可以通过不同的方式获得用户的注意,比如点亮呼吸灯,震动电话,播放一个声音等等,它们一般放一个图标在状态栏上,来让用户可以打开获得这些信息。
2.2.4 Content Provider
Content Provider是一个应用程序数据的集合,可以让其它的应用访问这些数据,这些数据可以被存放在文件系统中,SQLite数据库中,或者其它可以存储数据的地方。Content Provider是一个基本的方法集合,来使其它的应用可以获得和存储这些数据,然而应用不直接调用这些方法,而是使用一个ContentResolver对象来调用这些方法,一个ContentResolver可以和任何的Content Provider交流,它和Content Provider协作来管理系统中任何进程间的通信。
Content Provider提供数据操作的接口。其实对应用而言,也可以将底层数据封装成Content Provider,这样可以有效地屏蔽底层操作的细节,并且使程序保持良好的扩展性和开放性。Android提供了一些主要数据类型的Content Provider,比如音频、视频、图片和私人通讯录等。
2.2.5 Intent
在一个Android应用中,上述这四种组件是独立的,它们之间可以互相调用,协调工作,最终组成一个真正的Android应用。而这些组件之间的通讯,主要是由Intent协助完成的。Intent负责对应用中一次操作的动作、动作对应的数据、附加数据进行描述,Android则根据此Intent的描述,负责找到相应的组件,将意图传递给它,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件之间互相调用的相关信息,实现调用者与被调用者之间的解耦。
针对每种组件分别有对应的方法来启动它:
(1) 一个Activity是通过传递一个Intent对象到Context.startActivity()或者Activity.startActivityForResult()来启动的(或者去做一些新的任务),被启动的这个Activity可以通过getIntent()来获得导致它启动的那个Intent。
(2) 一个Service是通过传递一个Intent对象到Context.startService()来启动的(或者给一些新的命令给正在运行的Service),Android调用Service的onStart()方法,并且把Intent对象传递给它。同样的,一个Intent可以传递到Context.bindService()方法里来建立一个介于正在运行的Service和调用它的组件之间的连接,这个Service通过onBind()方法来接收这个Intent对象。
(3) 一个应用可以通过传递一个Intent对象给像Context.sendBroadcast(), Context.sendOrderedBroadcast(), Context.sendStickyBroadcast()这样的方法来发送一个广播,Android通过调用对应的onReceive()方法将Intent传递给所有对这个广播感兴趣的BroadcastReceiver。
2.2.6 进程
组件运行的进程是在AndroidManifest.xml文件里配置的,每个组件都有一个process属性可以用来指定进程的运行方式,process属性可以设置为某个组件运行在它自己的进程中,也可以设置为几个组件共享一个进程,或者不共享。如果两个应用共享一个Linux user ID并且具有相同的权限,那么就可以使这两个应用中的组件运行在相同的进程中。
所有的组件都在指定的进程中的主线程中实例化,系统调用这些组件就是从主线程里发出的,其它的线程将不会对每个组件再实例化,所有的回调方法,比如说View.onKeyDown()或者组件的生命周期方法等等都是运行在这个主线程中的,这就意味着当系统调用这个组件时,这个组件不能长时间地阻塞线程(比如说网络操作,循环计算),因为这样会阻塞这个进程中的其它组件,所以可以将耗时的任务分到其它的线程中。
Android系统会尽量维持一个进程的生命,直到最终需要为新的更重要的进程腾出内存空间。为了决定哪个该杀哪个该留
上一篇:
android毕业论文完整格式(食物相宜相克大全)
下一篇:
猪疥癣病的防治