一种多维度的web移动终端的设计与实现_第1页
一种多维度的web移动终端的设计与实现_第2页
一种多维度的web移动终端的设计与实现_第3页
全文预览已结束

下载本文档

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

文档简介

一种多维度的web移动终端的设计与实现

1android团队android是谷歌开发的基于linux平台的移动电话操作系统。该系统采用分层结构,由操作系统、中间组件、界面和应用组成。Android团队向应用开发者提供丰富多样的功能,诸如媒体播放、视音频频捕获等,并将这些功能设计成由不同的Server负责管理。这样应用程序只需做为Client与这些Server建立连接便可以使用这些服务,从而花很少的时间和精力就能开发出令人眩目的功能。基于通信方式、传输性能、安全性等方面的考虑,进程间通信采用了一套新的IPC机制———Binder。2inter通信模型与通信协议2.1任务系统b.c.平台平台Binder框架包括四个部分:Server、Client、ServiceManager以及驱动。Binder驱动提供标准文件操作如open()、mmap()、poll()、ioctl()等,以字符驱动设备中的misc设备注册在设备目录/dev下,用户可以通过/dev/binder访问它,它负责建立进程之间Binder通信,在进程之间传递Binder,管理Binder引用计数,传递和交互进程之间数据包等一系列底层支持。而ServiceManager是一个守护进程,它的作用是使Client能够通过Binder中注册的Server名字获得对Server实体的引用。从一个用户的角度来看进程A调用进程B的服务过程,就是Server通过注册将服务交由ServiceManager管理,而Client通过ServiceManager获得该服务的Binder引用,然后调用Binder引用的方法来实现调用服务。用户看到的是ServiceManager来实现通讯,而无法看到驱动在这一过程中所起的作用,Binder实现进程之间通讯的细节被屏蔽了,对用户而言是透明的。但是Binder框架的真正核心就是Binder驱动,相关的两个需要通讯的进程,它们通过ServiceManager调用libutil.so库来实现通讯,而libutil.so是通过Binder驱动读写内核空间中的一块共享内存来实现这一过程。Binder通信模型如图1所示。2.2主要功能接口设计Binder驱动和应用程序之间定义了一套接口协议,主要功能由ioctl()接口实现。协议基本格式是(命令+数据),使用ioctl(fd,cmd,arg)函数实现交互。参数cmd表示命令,参数arg表示数据。3binder机制的简单示例3.1信息远程服务一个应用的Service提供Book详细信息的远程服务,作为服务端,另外一个应用中的Activity想获取Book信息。Android的数据传递采用Aidl的方式。3.2android平台研究Android的不同应用不能共用数据,因此如果有需要的话只能通过进程间通讯来完成应用共享数据。进程间通讯(ipc)涉及到三个部分:客户端(调用方),传递数据,服务端(被调用方)。其中服务端Service被同一个应用调用和不同应用调用原理是不同的,因此分成以下两种:(1)本地服务(LocalService):Service被同一个应用中的Activity调用,用于实现应用程序自己的一些耗时任务。(2)远程服务(RemoteSercie):可以被其他应用程序复用,比如WiFi服务,其他应用程序不需要再写这样的服务,调用已有的即可。Android的数据传递采用Aidl的方式,考虑到效率的原因,没有用Java内置的Serializable,而是采用原始数据拆分组装的Parcel方式。根据上边相关知识的讲解可知,该场景中Service即服务端提供远程服务,activity即客户端调用Service提供的服务,Book即要传输的数据需要采用parcel方式构建。3.3创建阅读器文件1)创建一个Android工程,代码包名com.example.binderserver2)定义传输的对象Book,实现Parcelable接口,Book属性有:bookName、bookPrice,Book的行为方式有:属性相关的getter和setter方法、空构造方法及有参构造方法,有参构造方法内容如下:3)创建Book对应的aidl文件,定义文件名为Book.aidl,内容为:parcelableBook;4)创建IBinderServerService.aidl文件,在文件中将IBinderServerService定义为接口,内容是服务端提供的服务———没有实现的两个方法sayHello()和sayHello()5)定义一个继承了Service的类文件BinderServerService,在该类中必须定义一个IBinderServerService.Stub类型的私有属性mBinder,并在onBind方法中返回该私有属性mBinder,mBinder主要是用来实现服务端定义的两个方法,mBinder的定义如下所示:6)在AndroidManifest.xml中注册服务AidlServerService:7)工程名上右键Runas->启动应用Binder_Server,等待客户端的调用。3.4出入数字视频文件la1)创建一个Android工程,代码包名com.example.binderclient,并将服务端的代码包拷贝过来,保留com.examplebinder.server中的文件Book.java、Bookaidl、IBinderServerService.aidl,其余删除。2)Layout设计。在布局文件中放置一个按钮和三个TextView,按钮用于触发请求,TextView分别用于显示欢迎信息、图书名称及图书价格。3)服务调用。在代码中为按钮添加onClick事件,事件发生时执行的代码如下:然后在Activity中定义ServiceConnection类型的私有属性mConnection,mConnection的定义如下:4)启动客户端应用,点击按钮,Book信息会展示在TextView组件中。4id系统定制工作的帮助在Android系统中,大量的使用了Binder机制。了解Binder机制可以对应用程序开发以及Android系统定制工作提供很大的帮助。目前,国内Andr

温馨提示

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

评论

0/150

提交评论