将数据从 Android AIDL 发送到多个客户端

Posted

技术标签:

【中文标题】将数据从 Android AIDL 发送到多个客户端【英文标题】:Send data from Android AIDL to multiple clients 【发布时间】:2018-06-20 06:36:41 【问题描述】:

我有一个带串口的 android 设备。 我需要能够同时运行多个应用程序,并且它们都应该能够从串口发送和接收数据。 由于串口只能有一个连接,我想我应该使用一个可以直接与串口通信的应用程序。 该应用程序将具有 AIDL 接口,以允许其他应用程序从中发送和接收数据。 我可以成功地从其他应用程序向 AIDL 发送数据。 我的问题是,如何将数据从 AIDL 服务发送到其他应用程序。

我看到了一些使用回调的例子,(例如http://devarea.com/android-services-and-aidl/#.WydoR6czaUk)。

在我的情况下,我需要 AIDL 服务能够将数据发送到所有连接的客户端应用程序,而无需他们的请求。

我知道我可以为此使用自定义广播,但是每秒有很多数据来自串行端口,这可能会导致性能问题。

【问题讨论】:

【参考方案1】:

您可以使用广播通知其他应用程序(或使用 startService() 通知其他应用程序的服务)。您可以将数据收集到包中并传输。

【讨论】:

我知道我可以使用自定义广播,但是每秒有很多数据来自串口,这可能会导致性能问题。 如果我每秒发送一个广播,你不认为它会影响设备性能吗?

以上是关于将数据从 Android AIDL 发送到多个客户端的主要内容,如果未能解决你的问题,请参考以下文章

android aidl

Android跨进程通信Messenger

如何在不同进程中从远程服务向 IPC 客户端发送数据

Android AIDL:从java更改代码到kotlin之后项目崩溃

Android进程间通信-AIDL实现原理

向 AIDL 客户端提供 Parcelable 对象的代码