使用Bundle

Bundle实现了Parcelable接口,可以在四大组建之间传递数据,使用Intent将Bundle传递过去,

Bundle支持的数据类型:
基本数据类型,实现parcel的数据类型,bundle等

使用文件共享数据

将对象序列化到文件系统,然后在另一个进程中进行反序列化,虽然得到的对象内容是一样的,但是不是同一个对象了,

该方式需要考虑并发读写的问题

使用Messager

Messager是Aidl实现的,服务端一次只处理一个请求,不存在线程同步问题

使用Messager:主要用于发送消息,

1.服务端,

服务端创建service,在其中创建Handler,用该handler创建Messager对象,并在onbind()中返回Messager的Binder.

2.客户端

1)绑定service, 用服务端返回的binder创建Messager,使用该Messager可以向服务端发送请求,服务端接收到后,使用handler进行处理,.

2)如果服务端需要给客户端发消息,那客户端需要创建handler,使用该handler创建messager,将messager作为replyto参数传给服务端,

使用aidl

如果有多个客户端发消息,messager处理不过来,aidl可以进行在线程池内运行,通过aidl客户端还可以调用服务端的方法,根据前一篇的Binder运行机制的讲解.使用aidl可以方便的创建Binder类用于service将自己的方法暴露给客户端,供客户端调用.

步骤:

服务端

1.创建service,创建实体类,实体类的aidl声明文件,接口的aidl文件,注意一下几点:

基本数据类型,String,CharSequence,List要求元素能被aidl支持,map同list,实现了parcelable的对象,aidl接口本身

在同一个包下的类也要导入到接口定义aidl中

不是基本数据类型的需要在方法的参数中表明 in out inout 表示输入还是输出

==接口定义中没有成员变量==

客户端和服务端的包结构要一样,否则不能反序列化,所以客户端和服务端都需要一份aidl相关的包

服务端的方法是在binder线程池中执行的需要使用线程同步的数据结构,如CopyOnwriteArrayLIst(),ConcurrentHashMap

2.在service中实现接口aidl生成的Binder接口.

3.在onbind中返回binder

客户端

1.绑定service,将服务端返回的service转换成aidl所属的类型,即service返回的BInder.asInterface();

aidl文件支持的数据类型是有限制的.

在客户端,远程服务之间实现观察者模式

当服务的数据改变时,自动通知客户端.

remoteCallList专门用于实现远程调用的观察者的类

权限验证,只允许具有权限的客户端调用服务端

1.ondbind中返回null
2.onTransact()返回false
3.permission验证

使用contentProvider

content provider 也是基于binder实现的ipc,系统对齐进行了封装,content provider的使用就不多说了.

主要注意,多线程请求时需要进行同步.

使用Socket

使用socket就是在本地使用tcp/udp协议选择不同的socket端口进行通信

使用广播

broadcasts can be used as a messaging system across apps and outside of the normal user flow.

更多相关文章

  1. Android远程服务例程
  2. 【Android(安卓)Training UI】创建自定义Views(Lesson 1 - 创建
  3. 《第一行代码Android》学习总结第二章 Activity创建与相关设置
  4. 跟我学android- 创建运行环境(二)
  5. Android(安卓)HandlerThread的用法
  6. android创建sqlite数据库及在SD卡上创建数据库(一)
  7. 结合Android浅谈Builder模式
  8. Android(安卓)Zygote进程启动过程
  9. 桌面云的三种模式 VDI IDV VOI (笔记)

随机推荐

  1. android 开发技巧(10)--为背景添加圆角边
  2. Android解析JSON方式(一)服务器端生成JSO
  3. Android开发SQLite基本用法
  4. Android(安卓)当子控件设置 focusable=tr
  5. APP完全退出
  6. Android(安卓)ConstraintLayout 两控件部
  7. android 9.0 Intent卸载应用无反应问题
  8. Android(安卓)Monitor使用介绍
  9. android bluetooth开发基础-9管理连接
  10. Android(安卓)使用Gson解析json用法