java - Android,将数据推送到一组订阅线程的最佳方式?

标签 java android multithreading

在 Android (Java) 上,我在概念上遇到了提供以下内容的最佳方式的问题。我有一个线程轮询来自接口(interface)的数据包,在它们可用时读取它们。然后,我有一组线程应该在每个数据包到达时对它们进行操作(不同的线程有不同的操作)。

我想象的是线程应该能够“订阅”主线程上的数据包数据,并在每个数据包到达时获取其副本。如果将数据复制到每个“订阅”线程,我不介意(并且可能更喜欢)。这样,我就不必担心线程会同步某种共享数据的清理。

最好的方法是让主线程维护一个回调函数列表并在每个数据包上执行它们吗?但是,如果是这样,我如何确保函数在“从属”线程上执行?有没有任何人都能想到的其他/更好的方法来做到这一点?

最佳答案

一个好的解决方案可能是为您感兴趣的通信事件注册广播接收器,然后让初始数据包处理器适本地广播 Intent 。看看http://justanapplication.wordpress.com有关 Intents 的一系列详细帖子(8 篇,还在增加),以及开发指南中的以下两页。

http://developer.android.com/guide/topics/fundamentals.html

http://developer.android.com/guide/topics/intents/intents-filters.html

关于java - Android,将数据推送到一组订阅线程的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6079383/

相关文章:

android - Gradle:添加依赖项的优点/缺点

android - 从 RealmDatabase 检索数据并将其设置为 GridView

java - 向员工分配工作量的最佳策略

c++ - 使用 QtConcurrent::run 在单独的线程上连接信号/插槽

android - 添加快速联系徽章确实需要 SyncAdapter 吗?

c++ - 中断任意等待操作

java - 对导致服务器挂起并出现 "too many files open"的 Java 程序进行故障排除

java - 什么是java.util.Timer固定延迟周期任务?

java - Hashmap jdk1.7无锁get()和同步put()的线程安全

java - 如果将对象作为参数传递,为什么可以在静态方法中访问私有(private)字段