Android远程方法(AIDL)vs Intents - 性能&电池使用情况

时间:2011-02-16 11:00:03

标签: android performance android-intent interprocess aidl

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

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

  1. 意图&活动 - 一项活动捕获另一项活动的意图
  2. 远程方法(通过AIDL)
  3. 我想知道在以下情况中哪些更有效:

    1. 非常频繁的消息/方法调用,发送/流量非常少(例如只传递一堆基元)
    2. 使用大量流量块的频率较低的消息/方法调用(例如,收集数据并定期发送几KB / MB的数据)
    3. 交换大数据块的非常频繁的消息/方法调用
    4. 无论是在比较方面还是与基准的参考/链接方面,我都将不胜感激。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

我建议您使用Unix domain sockets机制来解决方案3)。高频将使文件/数据库的使用变得复杂,并且根据this answer,使用Android的IPC不建议使用性能,因为每个对象都必须转换为(并从中返回)一个需要时间的Parcel。你也可以使用Unix管道,但它有一些限制: