目前我有一个应用程序,其主要活动中的代码从xbee读取数据。我的问题是我希望在整个项目中将这些数据传递给4个不同类中的4个不同线程。我考虑捆绑它,但这似乎是一次性数据传输,而不是它的流。
我的一个想法是将数据写入名为messages
的字符串,然后使用getMessages()
函数,但是我遇到了从非静态类或老虎钳调用静态方法的问题反之亦然。
答案 0 :(得分:0)
您是否考虑过使用SharedPreferences
或延长Application
? SharedPreferences
允许您在持久存储中存储基本类型(String
,int
,boolean
等)。 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
,您还可以查看经典的制作人消费者问题