应用A和应用B的通信有哪些方式?
Posted zhangjin1120
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应用A和应用B的通信有哪些方式?相关的知识,希望对你有一定的参考价值。
IPC 即 Inter-Process Communication (进程间通信)。
IPC有哪几种方式?6种。
- Bundle
- 文件读写
- AIDL
- Messenger
- ContentProvider
- Socket
Bundle
Activity、Service、BroadcastReceiver通过Intent实现进程间通信,原理都是Bundle通信。
使用Intent就是Bundle方式。
Intent intent = new Intent(MainActivity.this, TwoActivity.class);
Bundle bundle = new Bundle();
bundle.putString("data", "测试数据");
intent.putExtras(bundle);
startActivity(intent);
缺点是单向通信。数据格式简单。
文件读写
文件格式可以是txt,XML,只要事先两个进程约定好就行。优点是简单易用,缺点是不适合并发场景,无法做到进程间及时通信。在没有并发的场景中使用,传递简单的使用。
AIDL
功能强大,支持一对多的并发通信,支持实时通信。使用稍微复杂,需要处理好线程同步。在有RPC需求的场景中使用。关于RPC,参考Android系统RPC与Binder。
Messenger
功能一般,支持一对多的串行通信,支持实时通信。缺点是不能很好处理并发现象,不支持RPC(RPC和网络有关),只能传输Bundle支持的数据。在低并发且无RPC需求的即时通信中使用。既然有 HTTP 请求,为什么还要用 RPC 调用?
ContentProvider
一般是成熟的App暴露自己的数据,其他app可以获取到数据,数据本身不是实时的。
数据访问方面,功能强大,支持一对多并发数据共享。主要提供数据源的CRUD操作。主要用于进程间的数据共享。
Socket
功能强大,可以通过网络传输字节流,支持一对多的并发实时通信。缺点是繁琐,不支持直接的RPC。使用场景是网络数据交换。
以上是关于应用A和应用B的通信有哪些方式?的主要内容,如果未能解决你的问题,请参考以下文章
asp。net 中的B/S项目中Remoting的应用?ASP.NET B/S项目中能做成有的状态?