background image

通过解析各种

intent,从一个屏幕导航到另一个屏幕是很简单的。当向前导航时 ,

activity 将会调用 startActivity(Intent myIntent)方法。然后,系统会在所有安装的应用程序中
定义的

IntentFilter 中查找,找到最匹配 myIntent 的 Intent 对应的 activity。新的 activity 接收

myIntent 的通知后,开始运行。当 startActivity 方法被调用将触发解析 myIntent 的动作,

这个机制提供了两个关键好处:

◆Activities 能够重复利用从其它组件中以 Intent 的形式产生的一个请求;

◆Activities 可以在任何时候被一个具有相同 IntentFilter 的新的 Activity 取代。

2、Intent Receiver

当你希望你的应用能够对一个外部的事件(如当电话呼入时,或者数据网络可用时,

或者到了晚上时)做出响应,你可以使用一个

Intent Receiver。虽然 Intent Receiver 在感兴趣

的事件发生时,会使用

NotificationManager 通知用户,但它并不能生成一个 UI。Intent 

Receiver 在 AndroidManifest.xml 中注册,但也可以在代码中使用 Context.registerReceiver()
进行注册。当一个

intent receiver 被触发时,你的应用不必对请求调用 intent receiver,系统

会在需要的时候启动你的应用。各种应用还可以通过使用

Context.broadcastIntent()将它们自

己的

 intent receiver 广播给其它应用程序。

3、Service

一个

Service 是一段长生命周期的,没有用户界面的程序。比较好的一个例子就是一个

正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中,应该会有多个
activity,让使用者可以选择歌曲并播放歌曲。然而,音乐重放这个功能并没有对应的
activity,因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的。在这个例子中,
媒体播放器这个

 activity 会使用 Context.startService()来启动一个 service,从而可以在后台保

持音乐的播放。同时,系统也将保持这个

service 一直执行,直到这个 service 运行结束。另外,

我们还可以通过使用

Context.bindService()方法,连接到一个 service 上(如果这个 service 还

没有运行将启动它)。当连接到一个

service 之后,我们还可以 service 提供的接口与它进行

通讯。拿媒体播放器这个例子来说,我们还可以进行暂停、重播等操作。

4、Content Provider

应用程序能够将它们的数据保存到文件中、

SQL 数据库中,甚至是任何有效的设备中。

当你想将你的应用数据与其它的应用共享时,

Content Provider 将会很有用。一个 Content 

Provider 类实现了一组标准的方法,从而能够让其它的应用保存或读取此 Content Provider
处理的各种数据类型。