一个AIDL的安卓demo,建立一个服务端和一个客户端的通信

报告文档

任务描述

  • 了解android service服务,使用AIDL进行交互;
  • 写一个简单的类似于sayhello的demo,做一个客户端和一个服务器端,两个apk,建立起通信,搞清楚通信流程;
  • 使用bundle作为数据传输,从activity传输信息到达service端;
  • 使用markdown写报告文档,并画出时序图,为期两周。

关于android service

什么是service

经过网上资料,以及书本资料的查阅,service与activity较为类似,就好比java中jsp与servlet的关系,作为android四大组件之一的后台服务,我对它的主要理解是:适合是去执行那些不需要和用户交互而且还要长期运行的任务,即使程序被切换到后台,或者用户打开了另一个应用程序,服务仍然能够保持独立运行。类似与activity,定义好的service必须在AndroidManifest.xml中进行注册。

service生命周期

service的主要生命周期方法有:onCreate(),onBind(),onStartCommand(),onDestroy()。

service的启动方式

service的启动方式有两种,一种是在没有绑定状态下直接使用startService(),另一种是通过调用 bindService() 与服务绑定,需要重写onBind()方法,并返回一个IBinder的实现类。

关于AIDL

AIDL的概述

AIDL 即 Android Interface Definition Language,就是Android接口定义语言,是用于定义服务器和客户端通信接口的一种描述语言,在android通信过程中真正起作用的并不是写好的AIDL文件,而是调用据此生成的接口实例模板。目的就是实现进程之间的通信,不同进程之间需要进行数据的传输,从而调用暴露出的方法来获取数据,满足了进程之间通信的需求。
在本次写的demo中,暴露方法的应用为服务端,客户端通过调用服务端暴露出来的方法来获取数据,交互的方式为绑定服务端service。

注意事项

AIDL支持八种基本数据类型,实现了Parcelable接口的数据类型,并且在使用AIDL时,需要明确导包。

服务端服务编码

传输的文本数据用自定义的MyString类来封装,方便后续使用Bundle包装以及AIDL文件调用,实现了Serializable与Parcelable接口,在MyString类中只有一个成员变量str,用来存入字符串数据。类具体定义如下:

public class MyString implements Parcelab
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值