- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android讲义
(完整文字版)
1.高焕堂讲解 Intent-based Programming
Android的4种嫡系组件(即Activity、Service、IntentReceiver和ContentProvider)之间如何互相沟通呢?这4种嫡系组件都是由Android启动的,并不是组件之间透过直接呼叫而启动的。就像我们打手机去车行叫出租车,而不是直接到街道上叫车。我们送给行一个简讯一通电话,表明我们的「意图」(Intent),当车行经理接到此意图,就依据你的意图的内含条件而去挑选最合适的出租车,然后派遣它去接你。
「意图」(Intent)本身是定义为一个类别(Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙述其所期望的服务或动作、与动作有关的数据等。Android则根据此Intent对象之叙述,负责配对,找出相配的组件,然后将 Intent对象传递给所找到的组件,Android的媒婆任务就完成了。
因此,Intent对象扮演着媒体中介的角色,提供「Client组件 ( Android ( Server组件」之间互相沟通的相关信息,实现了Client组件与Server组件之间『不知而亦能用』之效果,这又称为疏结合(Loosely-coupled)效果。其创造了Server组件抽换的自由度,这又称为PnP(Plug and Play)。
兹以下图为例,Activity主要是提供UI画面来与User进行互动,两个Activity之间的直接互动较少。其它如ContentProvider则常是为Activity等提供服务的。所以Activity发出Intent对象委托Android挑选到适当的ContentProvider对象(并且将Intent对象传递给ContentProvider对象)之后,通常会透过ContentProvider接口而呼叫ContentProvider的各项服务或功能。
?
?
?
在此图所示的范例里,当我们在一个订单列表画面(如Activity-1),点选某个订单之后,希望能够呈现出此订单的采购细项画面(如Activity-2)。此时,Activity-1需要发出一个 Intent对象,这个Intent对象说明了意图:包括“查找”(Get)动作、订单ID等数据,然后呼叫Activity父类别的startActivity (Intent intent)函数,将此Intent对象传送给Android。而Android会根据此Intent对象中的叙述,与AndroidManifest.xml所叙述的各嫡系类别之条件相比较,找出与此Intent叙述相配的组件(如Activity-2),然后Android将该Intent对象递交给它,于是Activity-2会根据此Intent对象之叙述而执行相应的动作。?????????? ?? (by Misoo团队)2.高焕堂讲解 ContentProvider范例
1.? 何谓Android的嫡系组件
Android有4项一等公民(或称为嫡系亲属),包括:Activity、ContentProvider、IntentReceiver与Service。它们都必须宣告于AndroidManifest.xml档案里,如下:
?xml version=1.0 encoding=utf-8?
manifest xmlns:android=/apk/res/android
package=com.misoo.SQ03
uses-permission xmlns:android=/apk/res/android
android:name=android.permission.INTERNET
/uses-permission
application android:icon=@drawable/icon android:label=@string/app_name
provider android:name=DataProvider
android:authorities=vider.SQ03
/provider
activity android:name=.ac01 android:label=@string/app_name
intent-filter
action android:name=ent.action.MAIN /
category androi
文档评论(0)