Android多线程应用程序-共享状态

标签 android multithreading gps

我正在开发具有多个线程的 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/

相关文章:

java多线程在给定数量的线程之间分割计算

java - 套接字接受和多线程

android - getLastKnownLocation 在 Android 中返回 0,0

.net - 如何在 Windows Mobile 中读取 GPS 信号强度?

java - 带有版权的Android Studio应用程序平板图标使用

android - kitkat android 4.4 上的/system/lib/libwebviewchromium.so native 崩溃

android - 选择日期范围内的元素

multithreading - 并行运行多个 ANTLR4 词法分析器/解析器实例

Android GPS 应用程序未关闭连接

java - 异步和 ListView Android