将主活动中的数据流发送到不同类中的线程

时间:2015-07-15 15:11:14

标签: java android multithreading

目前我有一个应用程序,其主要活动中的代码从xbee读取数据。我的问题是我希望在整个项目中将这些数据传递给4个不同类中的4个不同线程。我考虑捆绑它,但这似乎是一次性数据传输,而不是它的流。

我的一个想法是将数据写入名为messages的字符串,然后使用getMessages()函数,但是我遇到了从非静态类或老虎钳调用静态方法的问题反之亦然。

4 个答案:

答案 0 :(得分:0)

您是否考虑过使用SharedPreferences或延长ApplicationSharedPreferences允许您在持久存储中存储基本类型(Stringintboolean等)。 Application可以扩展为存储可在程序中的任何位置访问的变量/方法。例如,MyApplication app = (MyApplication)getApplicationContext();

您是要在每个线程中修改此数据流,还是只是读取值并单独修改数据?您可能需要设置一些布尔标志,以确保您不访问/修改执行这些操作不安全的数据。希望有所帮助!如果我能提供清晰的代码示例,请告诉我。

答案 1 :(得分:0)

这样做的一种方法是简单地让main activity写入android.database.sqlite,其他人只需从中读取

由于不确定您的代码布局如何,我只是推荐您documetation页面:

http://developer.android.com/reference/android/database/sqlite/package-summary.html

答案 2 :(得分:0)

您可以为每个线程创建一个处理程序,然后在所有处理程序上发布消息。下面是创建Handler并从处理程序引用发布消息的链接: -

using a Looper in a Service is the same as using a separate thread?

答案 3 :(得分:0)

您可以实现观察者模式来解决这个问题。将四个类作为观察者,将活动作为主体。

公开类似onDataChanged(byte[] data)的api,只要您的活动有新数据,就会调用该API。

要了解有关观察模式的更多信息,请参阅 - https://en.wikipedia.org/wiki/Observer_pattern

如果您想要同步https://en.wikipedia.org/wiki/Producer%E2%80%93consumer_problem

,您还可以查看经典的制作人消费者问题