当前位置: 首页 > news >正文

专业购物网站卓越 网站

专业购物网站,卓越 网站,建设网站代理,开封做网站哪家好项目前置 这是我之前写的关于Binder的一些知识点和使用基本数据类型在通信的文章,感兴趣的可以看一下: Binder(一)Binder的介绍和AIDL使用Binder的实例 项目目标 在两个APP之间进行数据传递,使用Android推荐的Binder通讯&#…
项目前置

这是我之前写的关于Binder的一些知识点和使用基本数据类型在通信的文章,感兴趣的可以看一下: Binder(一)Binder的介绍和AIDL使用Binder的实例

项目目标

在两个APP之间进行数据传递,使用Android推荐的Binder通讯,而AIDL是Android推出的用来简化Binder写法的工具。

如果只是简短的使用java基本数据类型的话,只需要根据上面的那一篇文章对着来就可以了,这次我们需要使用我们自定义的数据bean来进行数据传递,而且是在实际项目中使用,就需要进行一些处理了。

项目需求

在这里为了区分,将接收数据的项目作为客户端,将发送数据的服务app作为服务端。服务端要获取外部数据,然后将这个数据通过Binder发送到客户端,客户端接收数据。

项目实现
服务端

首先我们要创建一个新的项目,然后在新的项目里面创建AIDL

创建AIDL
aidl文件夹和java文件夹同级,都在main文件夹下面

在这里插入图片描述
创建完之后,会得到一个这样的文件
在这里插入图片描述
然后再java的同名,同级别文件下面创建一个数据bean文件

在这里插入图片描述
数据bean代码如下

public class CpServiceMsg implements Parcelable {public int channel;public int id;public String data;public CpServiceMsg(int channel, int id, String data) {this.channel = channel;this.id = id;this.data = data;}public int getChannel() {return channel;}public void setChannel(int channel) {this.channel = channel;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getData() {return data;}public void setData(String data) {this.data = data;}protected CpServiceMsg(Parcel in) {channel = in.readInt();id = in.readInt();data = in.readString();}public static final Creator<CpServiceMsg> CREATOR = new Creator<CpServiceMsg>() {@Overridepublic CpServiceMsg createFromParcel(Parcel in) {return new CpServiceMsg(in);}@Overridepublic CpServiceMsg[] newArray(int size) {return new CpServiceMsg[size];}};@Overridepublic int describeContents() {return 0;}@Overridepublic void writeToParcel(@NonNull Parcel dest, int flags) {dest.writeInt(channel);dest.writeInt(id);dest.writeString(data);}@Overridepublic String toString() {return "CpServiceMsg{" +"channel=" + channel +", id=" + id +", data='" + data + '\'' +'}';}
}

注意:
1.这个数据bean要实现【Parcelable】接口
2.尽量不要用byte[]类型,因为如果是高版本和低版本软件进行通信的时候,低版本的没有读取byte[]数据的快捷方法。

接下来在aidl的相同的目录下创建这个
首先创建文件夹bean
在这里插入图片描述
然后创建文件【CpServiceMsg.aidl】
在这里插入图片描述
这两个文件是同名文件,而且他们的文件目录也是同样的,只是一个在aidl里面,一个在java文件夹里面而已,这个需要注意一下。

然后在【CpServiceMsg.aidl】文件里面添加
在这里插入图片描述
然后在这个【ICPService.aidl】文件里面添加方法
在这里插入图片描述
这样的话我们AIDL就写好了,然后需要【Build】一下项目。

这样Android Studio会自动帮我们生成相关代码,可以在这个地方查看
在这里插入图片描述
接下来我们需要使用这个AIDL

首先我创建一个服务类

在这里插入图片描述

然后为了方便可以在这个服务类里面创建类继承系统生成的aidl

在这里插入图片描述
然后在MyForegroundService类里面
在这里插入图片描述
然后
在这里插入图片描述
这样当客户端连接到这个服务端的时候,这个onBind会调用,返回这个myBinderCpService

然后客户端调用这个getCanMsg方法的时候,就会获得这个
在这里插入图片描述
还有,一定要记得在【AndroidManifest.xml】注册清单文件里面对这个服务类进行注册
在这里插入图片描述

客户端

客户端这边也要创建一个aidl文件,但是客户端的aidl文件不要自己写,要直接从服务端直接复制过来,不要改什么东西。
在这里插入图片描述
然后在这个java文件夹下面创建同样的目录结构,当用在项目里面的时候,这个是肯定要做的,因为每个项目都有自己的目录结构,这就需要自己创建这个相关的目录结构,不然到时候aidl找不到文件

在这里插入图片描述
这个文件直接从服务端直接复制就好了。

然后需要进行【Build】一下,这样系统会创建项目的文件类。

在需要使用的地方,比如在一个【Activity】里面

在这里插入图片描述
然后创建一个【ServiceConnection】

在这里插入图片描述
然后就可以进行服务的绑定了
在这里插入图片描述
接下里就是使用了
在这里插入图片描述
然后就饿没什么了,启动服务端,启动客户端,进行数据通信了。

http://www.yayakq.cn/news/90026/

相关文章:

  • 驻马店 网站建设沈阳网站建设公司多少钱
  • 无锡建设企业网站dw网站引导页怎么做
  • 中国建设银行网站官网网址华夏望子成龙网站开发背景
  • 重庆网站建设推广移动端适配
  • 模板网站建站哪家好怎么做卡蜜网站
  • 个人建设什么网站好晋中市住房与城乡建设厅网站
  • 威海做企业网站怀化seo优化
  • 网站建设定制公司推荐短期的技能培训有哪些
  • 网站建设礻金手指下拉十一租凭境外服务器做违规网站
  • 大气的个人网站电子商务网站的建设步骤有
  • 怎么看网站源码用什么做的国家职业资格证书网站
  • 优化网站制作公司好吗wordpress缩略图变形
  • wordpress网站的根目录在哪里wordpress视差插件
  • 视频制作网站素材宁波外贸seo网站建设
  • 幻灯片网站源码网站开发报告步骤分析
  • 在线教育网站策划方案网页发布的步骤
  • 怎么做跟别人一样的网站淮南网络建站公司
  • 怎么做公司网站竞价wordpress网站建设
  • 小说网站开发环境那个号中国站长之家爱站网
  • 郑州做网站助企建一个网站需要什么资料
  • 58同城类似的网站开发微信分享按钮wordpress高级版
  • 手机可以开发网站永久免vip的网站
  • 宜昌公司做网站机械加工网上怎么接单
  • iview做的网站哪些公司做企业网站
  • 企业为什么要做网站运营wordpress 去掉 顶部
  • 百度账号一键登录广州建站优化
  • 集团网站建设社区网站 备案
  • wps的ppt做网站超链接使用iis6搭建网站
  • 新乡个人网站建设北京专业的网站ui设计公司
  • 关于做情侣的网站的图片素材响应式门户网站