gpt4 book ai didi

Android 广播接收器与 aidl

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:02:22 24 4
gpt4 key购买 nike

使用 aidl 与广播接收器在应用程序之间发送消息(用于后台和前台处理)的优缺点是什么?我一直在使用接收器,由于带有 Intent 过滤器的订阅模型以及易用性/可扩展性,这很好。将这种方法用于 VS AIDL 有缺点吗?

谢谢本

最佳答案

广播接收者

  • 这是一个异步通信。
  • 复杂度低- 这是进程间最简单的通信方式。
  • One to All communication- 广播同时向所有收件人传输消息。
  • Android 操作系统应用程序组件之间基于 Intent 的通信
  • BroadcastReceiver.onReceive 总是运行在主线程(UI线程)
  • 通过 Intent 发送数据时,您应该注意限制数据大小为几 KB。发送太多数据会导致系统抛出 TransactionTooLargeException 异常。 https://developer.android.com/guide/components/activities/parcelables-and-bundles

    Intents 最多可以传输 1Mb 数据的语句肯定是错误的,500Kb 更准确。 https://www.neotechsoftware.com/blog/android-intent-size-limit "

  • 安全性:广播通过 Android 操作系统传输,并且可能会引入安全威胁。其他应用程序可以收听广播。不应广播任何敏感数据。

AIDL

  • 它是同步和异步进程间通信。默认情况下,AIDL 通信是同步的。为了让AIDL通信异步,使用“oneway”关键字。

  • 复杂度高 - AIDL 接口(interface)同时发送请求到服务,它必须处理多线程。

  • 一对一沟通

  • 使用底层 Android 操作系统 Binder 框架

  • 需要编写线程安全的代码。

  • Binder 交易缓冲区的固定大小有限,目前1Mb,由进程的所有正在进行的事务共享。 https://developer.android.com/reference/android/os/TransactionTooLargeException.html "

  • 安全性:AIDL 允许开发人员将他们的接口(interface)公开给其他应用程序。 客户和服务都同意顺序相互交流

关于Android 广播接收器与 aidl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10844304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com