33认识Binderjava类别的角色.doc_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

33.认识Binder.java类别的角色Binder.java是Android应用框架里的重要组件,由于它提供了IBinder接口,让Activity等组件能透过IBinder接口而远程呼叫应用程序里的Service组件。对于Binder.java类别,我们可以从不同角度来看它所扮演的角色。从应用程序的Service组件来看,Binder.java就扮演Service的接口对象角色。当Activity类别想呼叫远程的Service类别之函数时,可要求Service类别诞生一个Binder.java类别的对象,由它提供IBinder接口给Activity组件,就搭起Activity与Service组件之间的沟通桥梁了。从IPC(Inter-ProcessCommunication)角度来看,上述的沟通桥梁是跨进程的IPC沟通机制。Binder.java会透过JNI接口与本地(Native)的底层Binder服务沟通合作。在Activity和Service所在的进程之间建立Proxy/Stub机制,以完成Activity与Service之间的连结(Connection)。一旦完成连结之后,Activity就能透过IBinder接口而呼叫Service的函数,Proxy/Stub机制还会进行跨进程的Marshalling动作,协助Activity与Service之间跨进程的数据交换。从框架(Framework)的角度来看,他只是Android里的BBinder.cpp类别在Java层的一个代表者,它以父类别(Superclass)形式出现,提供给Java层的应用类别(如myBinder.java)来继承,协助底层的BinderSystem(设计在先)能取得应用类别(设计在后)的客制化部分的信息。例如有了Binder.java的协助,BinderSystem得以从呼叫Service的onBind()函数而得知如何呼叫myBinder.java所客制化的onTransact()函数,如此让Android框架幕后的BinderSystem能与目前的myBinder.java应用类别结合起来,而达到框架的目的了。表面上,myActivity.java类别(Activity.java的子类别)呼叫myBinder.java(Binder.java的子类别)的transact()函数及onTransact()函数,在实践机制里,myActivity.java是透过Connection对象去与BBinder.cpp沟通,然后BBinder.cpp才返向呼叫myBinder.java里的transact()和execTransact()等函数。由于myActivity.java与myService.java之呼叫是透过BBind

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论