6

我的团队正在开发一个 Android 项目,该项目由几个交换数据的 Android 应用程序(在同一部手机上)组成。这个想法是有几个应用程序正在收集一些数据并将这些数据发送到主应用程序。这里的主要挑战是在 CPU 负载和电池使用方面尽可能便宜地进行交换。

据我所知,实现进程间通信有两种方式:

  1. 意图和活动——一项活动捕捉另一项活动的意图
  2. 远程方法(通过 AIDL)

我想知道在以下情况下哪个更有效:

  1. 非常频繁的消息/方法调用,数据发送/流量很少(例如,只传递一堆原语)
  2. 具有大流量块的不太频繁的消息/方法调用(例如收集数据并定期发送几 KB/MB 的数据)
  3. 交换大数据块的非常频繁的消息/方法调用

我将不胜感激任何帮助,无论是在比较方面还是在基准的参考/链接方面。

4

3 回答 3

2

我认为对于 1)您最好使用远程服务,对于 2)和 3)您最好写入文件或数据库。Intent 更多用于不频繁的进程间通信以及启动应用程序和服务。

于 2011-02-16T12:37:45.967 回答
1

您还可以尝试使用本机代码来创建共享内存作为替代选项。查看此链接了解详情: http ://www.androidenea.com/2010/03/share-memory-using-ashmem-and-binder-in.html

于 2011-02-16T13:25:49.193 回答
1

我建议您使用Unix 域套接字机制来解决方案 3)。高频率会使文件/数据库的使用变得复杂,根据这个答案,不建议使用 Android 的 IPC,因为每个对象都必须转换为(并从)一个 Parcel,这需要时间。你可以也使用 Unix 管道,但它有一些限制:

于 2013-08-12T10:44:15.623 回答