设为首页 加入收藏

TOP

深度探索Android应用程序的基本原理(二)
2014-11-24 13:58:00 来源: 作者: 【 】 浏览:4
Tags:深度 探索 Android 应用程序 基本 原理
序。(Content provider在稍后一节会专门讲述)


无论何时,只要有一个被特定的一个组件所处理的请求,Android就确保组件的应用程序处理正在运行,如果有必要就启动它,并且保证组件的一个合适的实例是可用的,如果有必要就创建这个实例。


当一个请求来自一个ContentResolver时,内容提供器被激活。其他三个组件----activities,services和broadcast receivers----被名为intents的异步消息所激活。一个intent是一个Intent对象,持有消息的内容。对于activities和services来说,它意味着位于其他事物中被请求的动作和指定要操作的数据的URI。例如,它可能会为一个activity传送一个请求以代表给用户的一个图片,或者让用户编辑一些文本。对于broadcast receivers,Intent对象意味着被公告/通知的动作。例如,它可能会通告有兴趣的相关方,相机的按钮被按下了。


有各自的方法来用于激活每一类组件:


q 通过传递一个Intent对象到Context.startActivity()或Activity.startActivityForResult(),来启动一个activity(或者让做一些新的东西)。进行响应的activity可以通过调用其getIntent()方法来查看引起它被启动的原始内容(intent)。Android调用该activity的onNewIntent()方法来向其传递任何后续的intent。
一个activity经常启动下一个activity。如果它期望从它所启动的activity获得一个返回的结果,那么它就要调用startActivityForResult()而不是startActivity()。例如,如果它启动一个让用户挑选照片的activity,那么它可能期望返回被选中的照片。结果在一个Intent对象中被返回,而该Intent对象被传递给进行调用的activity的onActivityResult()方法中。


q 通过传递一个Intent对象给Context.startService(),一个service被启动(或者一个新的指令传达给正在运行的service)。Android调用该service的onStart()方法并将Intent对象传递给它。相似地,将一个intent传递给Context.bindService(),能够在进行调用的组件和目标service之间建立一个持续的连接。该service在一个onBind()调用中接收该Intent对象。(如果该service还没有运行,bindService()能有选择地启动它。)例如,一个activity可能会与音乐播放服务建立一个连接,这样它就能向用户提供控制播放的方式(一个用户接口)。该activity将调用bindService()来建立这个连接,然后调用service所定义的方法来影响播放。(在稍后“远程过程调用RPC”一节会专门讲述service)


q 应用程序能通过传递一个Intent对象到诸如Context.sendBroadcast(),Context.sendOrderedBroadcast(),和Context.sendStickyBroadcast()这些方法中来创建一个广播。Android通过调用它们的onReceive()方法发布该Intent到所有感兴趣的broadcast receivers。(更多有关Intent的信息,在稍后一节“Intents and Intent Filters”中会专门讲述)


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mini6410 实现简单 adc驱动--友善.. 下一篇Android 视频缩略图之 MediaStore

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: