应用组件-应用程序组件

一个android程序由多个组件组成,每个组件实现特定的功能,有的组件可以作为系统进入应用程序的入口点,各个组件协同合作,共同组成一个完整的应用程序。有4种不同类型的组件,每种组件有其独特的使用目的和生命周期。

  • Activities-一个activity表示一个同用户交互的窗口界面。各个activity之间是彼此独立的。比如:为了把刚拍的照片通过email发送出去,在拍照应用中可以启动电子邮件应用中的写邮件activity。每个activity都继承自android.app.Activity类。
  • Services-一个service组件不提供交互界面,在后台运行,一般长期运行或者进行远程访问。比如:播放音乐,或者通过网络下载数据,此时用户可以同时使用任何其它的应用。通常情况下,可以通过一个activity来与之交互,比如启动service,停止service,监测service的运行情况等。每个service都继承自android.app.Service类。
  • Content Providers-一个content provider管理一组共享的应用数据。你可以把数据存储在文件系统,sqlite数据库,web,或者任何其它应用程序能够访问到的持久存储位置。通过content provider,其它应用可以查询或者修改数据。比如:android提供了一个管理用户地址簿信息的content provider,任何具有相应权限的应用都可以对地址簿中的联系人信息进行读写。此外,content provider也可以不共享数据,而是用于读写应用的私有数据。每个content provider都继承自android.content.ContentProvider类。
  • Broadcast receivers-用于对系统级的广播通知作出响应。系统级的广播通知包括:屏幕关闭,电量偏低,拍照。应用程序也可以创建广播通知,比如:通知其它应用数据已经下载到设备上并可以使用。broadcast receiver不显示用户界面,它可以在接收到某个广播事件的时候,创建一个状态栏通知来提醒用户。或者为了响应这个事件,仅仅是启动一个service来执行一些任务。每个broadcast receiver都继承自android.content.BroadcastReceiver类。

任何应用都可以启动另一个应用的某个组件。比如:一个应用中希望用户拍一张照片,你可以启动另一个拍照应用中的activity进行拍照,而不用自己开发一个拍照功能。对于用户来说,可能会认为拍照功能也是你的程序中的一部分。

当系统启动一个组件,会启动该组件所属的应用的进程,并实例化组件所需要的类。比如:启动拍照程序的activity的时候,会启动拍照程序的进程,而不是你的应用的进程。和其它系统不一样,android应用程序没有单一的入口(比如:没有main方法)。

因为系统在单独的进程中运行每个应用,并且通过设定文件访问权限来阻止对其它应用的文件的访问。所以,你的应用无法直接激活其它应用中的组件。你只能发消息给android系统,告知你要访问某个组件的意图,然后由android系统来为你进行组件的激活。

激活组件的方法

  • activity-可以传递一个Intent给startActivity方法或者startActivityForResult方法
  • service-可以传递一个Intent给startService方法或者bindService方法
  • broadcast receiver-可以通过传递一个Intent给sendBroadcast,sendOrderedBroadcast,sendStickyBroadcast方法,来发起一个广播
  • content provider-可以执行ContentResolver的query方法

猜你喜欢

转载自blogzhoubo.iteye.com/blog/1894809