应用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。使用场景是网络数据交换。

Android 进阶13:几种进程通信方式的对比总结

Android中进程间通信(IPC)方式总结

以上是关于应用A和应用B的通信有哪些方式?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 应用程序和数据库服务器之间都有哪些不同的通信方式?

asp。net 中的B/S项目中Remoting的应用?ASP.NET B/S项目中能做成有的状态?

Android:当用户在导航组件、单活动应用程序中回击片段 B 时更新片段 A

方向改变后无法与 Fragment 正确通信

目前最常见的”无线通信(数据)传输技术“有哪些?

基于 AIDL 的双向通信(已更新代码)