以非常高的速度将连续数据从服务发送到活动

Posted

技术标签:

【中文标题】以非常高的速度将连续数据从服务发送到活动【英文标题】:Sending continuos data from service to activity at really very high speed 【发布时间】:2016-03-11 08:22:15 【问题描述】:

我正在基于生产者-消费者结构的架构上开发测试应用程序。我有一个生产者-消费者*问题,特别是如果在 android 服务(即消费者)中使用了生产者回调机制。消费者的通话时间不应超过传递信息所需的最短时间。因为生产者的回调应该在与消费者不同的线程中运行。

在我的特定情况下,在 Producer 的回调中,只应完成传递对象的引用移动并立即释放控制权。该对象必须在消费者线程中使用。目前我一直在调用一个方法,它只获取回调中传入的数据并处理该数据并通过 Intent 返回给 Android Activity。

现在,众所周知,Android Intent 是资源消耗实体,不打算(也不应该)用于传输数据流。

在测试应用中,每个回调都会生成一个意图。那些溢出整个系统。例如,在 25% 的负载下,每秒触发大约一千个 Android 意图的流量。

我想要一种不包含 Android Intents(没有任何第三方 jar)的方法,我可以使用它以超高的速率将数据发送回我的 android 活动或主机上的路由,这样我的生产者回调就不会崩溃了。

【问题讨论】:

【参考方案1】:

ServiceActivity 之间使用套接字连接来传输数据。 Intent 是错误的技术。

【讨论】:

如果 Service 和 Activity 都由同一个进程托管,“绑定本地服务”模式将是最佳的:不需要任何系统 API 进行直接通信,如果它们由不同进程托管,请参阅 @ 987654321@(管道不仅比socket快,而且代码也简单很多) @pskink 你为什么不创建一个新答案而不是评论我的? 谢谢大卫,考虑到我的要求,我尝试做完全相同的事情,但现在我使用 Socket 编程直接将数据转储到我的 Window 机器上。我的客户端提供的显示器不支持 wifi,所以我现在通过 USB 将数据从 android OS 发送到 windows。我很想了解 adb forward tcp:xyz tcp:pqr 因为现在我必须有多个端口用于数据流。

以上是关于以非常高的速度将连续数据从服务发送到活动的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从 java 服务类发送到 kotlin 活动类? [关闭]

将对象从服务发送到活动(无法编组非 Parcelable)

如何将字符串从一个活动发送到另一个活动

将意图从服务发送到活动

如何将数据从活动传递到正在运行的服务

从服务发送到活动的数据不起作用