剖析Android应用(3)

上篇:http://jonytan.iteye.com/blogs/161281 

 

Intent and Intent Filters
    在Android应用中,切换屏幕可以用Intent类来实现。
    Intent用来描述Android应用想做的事情。intent数据结构中最重要的两部分是action、action对应的数据。
    action的常用数值有:MAIN(activity的入口)、VIEW、PICK和EDIT等。
    action对应的数据是一个URI。例如,为了显示某个人的联系信息,需要创建一个intent。这个intent中包含了一个VIEW action以及可以描述这个人的URI数据。
    Intent类还有一个相关类,类名叫IntentFilter。Intent负责发出一个请求,而intent filter负责描述一个Activity(或者intent receiver)所能够处理的所有Intent。
    例如有这么一个Activity,它可以显示某人的联系信息,那么它就会发布一个IntentFilter。在这个IntentFilter里内含了如何利用一个包含联系人的数据,来处理action(其数值是VIEW)。
    通过AndroidManifest.xml文件,Activity可以发布其IntentFilter。
   
    利用Intent,可以实现从一个屏幕导航到另一个屏幕。
    导航功能的实现方法如下:
      第1步 调用activity的函数startActivity(myIntent)。
      第2步 系统搜索所有已安装应用的Intent Filters,找出最匹配myIntent的Intent Filters,并据此得到所对应的activity。
      第3步 用myIntent生成新的activity,并执行这个activity。
    在运行时,在调用startActivity情况才处理Intent有以下两大好处:
      第1 通过简单地发出一个形如Intent的请求,Activity就可以重用其它组件的功能。
      第2 利用一个同等IntentFilter,就可以在任何时候用新的Activity取代旧的Activity。

 

Intent Receiver
    在Android应用中,如果需要针对外部事件(例如:电话铃响、数据网络激活、或者午夜12点的时候等等)编写一些响应代码,那么就要使用Intent Receiver。
    当相应事件发生时,尽管Intent Receiver可以使用NotificationManager来提醒用户,但其无法显示用户界面。
    在AndroidManifest.xml文件中可以注册Intent Receiver,当然也可以通过编写代码Context.registerReceiver()来注册。
    Android应用并不是一定要使用Intent Receiver的。系统本身可以启动Android应用,当然如果有必要,也可以通过触发Intent Receiver来启动Android应用。
    使用Context.broadcastIntent(),Android应用也可以向其它的Android应用发送intent广播。

 

Service
    一个Service将一直运行,而且运行时没有用户界面。一个很好的离例子是媒体播放器,它可以依次播放列表中的歌曲。
    在媒体播放器的应用中,可能有一个或者多个Activity,用来让用户选择并开始播放歌曲。由于用户在导航到新的屏幕之后仍然希望音乐能继续播放,所以音乐的背景播放本身并不需要处理Activity。在这种情况下媒体播放器的Activity可以用Context.startService()来启动一个Service,这个Service会在后台运行并保持音乐的播放。接下来,系统会继续播放音乐直到结束。(通过阅读Life Cycle of an Android Application可以进一步了解在系统中Service的优先级)
    注意,使用Context.bindService()可以联接一个Service(如果还没有运行的话也可以启动它)。联接到Service之后,可以通过这个Service开放的接口与Service进行通信。对于音乐Service,允许进行暂停、重放操作等。

 

Content Provider
    Android应用可以把数据保存到文件、SQLite数据库或者其它可以使用的存储方式。
    而Content Provider可以让Android应用之间共享数据。
    Content Provider是一个类,它实现了一套标准的方法,可以让Android应用之间保存、获取由Content Provider处理的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值