最近在看台湾高人--高焕堂的android讲义。在此,自己做个记录。

内容大部分来自讲义,不是原创。自己打一遍,也算是加深下理解。

----------------------------------------------------------

Intent-based Programming:

Android 有4中嫡系组件:Activity 、ContentProvider 、 IntentRecevier 、 Service。

那么什么又叫做嫡系组件呢?上面四位是Android的一等公民,他们都必须在AndroidManifest.xml档案里声明。

在eclipse里我们通过提示可以得到下面这张图片。那么我们可以清楚的找到这四位一定公民。

这让android知道我们在这里定义了多少嫡系组件类别;android可以在启动时将他们执行起来,成为共享(Shared)的服务组件。

这些嫡系服务组件间的沟通,通常是透过「意图」(Intent)对象来请Android转达给对方,Android则会依据意图而找出最佳的配对。配对成功,就展开相互的沟通与服务了。

[意图](Intent)本身定义为一个类别(Class),一个Intent表达一个期望和目的叙述其所期望的服务或动作、与动作有关的数据等。Android则根据此Intent对象之叙述,负责配对,找出相配的组件,然后将Intent对象传递给所找到的组件,Android的媒婆任务就完成了。

因此,Intent对象扮演着媒体中介的角色,提供「Client组件 -->Android --> Server组件」之间互相沟通的相关信息,实现了Client组件与Server组件之间『不知而亦能用』之效果,这又称为疏结合(Loosely-coupled)效果。其创造了Server组件抽换的自由度,这又称为PnP(PlugandPlay)

兹以下图为例,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(Intentintent)函数,将此Intent对象传送给Android。而Android会根据此Intent对象中的叙述,与AndroidManifest.xml所叙述的各嫡系类别之条件相比较,找出与此Intent叙述相配的组件(Activity-2),然后Android将该Intent对象递交给它,于是Activity-2会根据此Intent对象之叙述而执行相应的动作。

更多相关文章

  1. android  打开多个Activity,返回到第一个Activity的问题
  2. 浅析Context及可能带来的内存泄漏问题
  3. Android(安卓)aidl学习笔记-客户端
  4. Android四种联网方式
  5. Android常用控件之GridView使用BaseAdapter
  6. Android官方架构组件ViewModel+LiveData+DataBinding架构属于自
  7. android生态之应用篇
  8. Android通用布局对象
  9. [Android] 获取WebView的页面标题(Title)-----WebChromeClient.o

随机推荐

  1. Android(安卓)平台上长连接的实现
  2. Android中几种图像特效处理的集锦!
  3. Eclipse开发Android常用快捷键
  4. Android实现底部弹出列表选择器
  5. android进程间服务通信
  6. Android应用的跨语言调用小结
  7. Android客户端采用Http 协议Post方式请求
  8. Android(安卓)TextView使用HTML处理字体
  9. Android应用程序框架层和系统运行库层日
  10. Understanding Android(安卓)Security(安