我正在开发具有多个线程的 Android 应用程序 - 其中一个线程每秒从 GPS 接收器获取数据 1 次。我希望其他线程能够访问来自 GPS 线程的信息。
我已经尝试过使用消息队列来做到这一点,但这使代码变得非常困惑 - 我创建的所有新线程都必须以自己的方式处理消息,因此我必须在每个线程类中执行大量新的实现。
我希望能够以这种方式简单地获取数据:
ApplicationState.getLocation();
这样我就可以使用最新的数据。我怎样才能实现它?我不想创建具有同步字段的静态类,因为我不想锁定线程太久,因为我正在其他线程中进行一些在线图像分析。
这里哪种方法最好?
干杯, 内布里尔
最佳答案
您是否考虑过使用事件总线系统? Otto, an Apache licensed library from Square非常整洁。
您可以创建一个位置更新类来触发新的LocationUpdateEvents
。任何有兴趣接收此更新的对象都可以有一个用 @Subscribe
注释的方法。这是一种很好的进程间通信方法,不依赖于困惑的监听器接口(interface)。
Otto 的另一个优点是您的 LocationUpdater 类可以有一个用 @Produce 注释的方法。这样,任何开始
监听LocationUpdateEvents
的对象都将立即收到一个包含您的LocationUpdater
找到的最后位置的事件。
关于Android多线程应用程序-共享状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13998415/