从守护线程更新单例
Updating a singleton from daemon thread
我有一个单例,用于存储来自不同片段的共享信息。
另一方面,我有一个生成守护线程的服务。该线程连接到事件总线并负责从外部服务器接收事件。当它收到一个新的事件时,更新单例并通过LocalBroadcastManager
.
通知片段。
从创建的没有同步的线程更新单例是否正确?我的意思是关于 Java/Android 内存模型。 (单例只能从此 service/thread 更新)。
这种方法好还是有更好的模式来实现它?
不,单例模式应该在Android中避免。为什么?因为单例模式使用静态实例字段。应该避免这样的静态字段,因为 OS 可以卸载你的 class 并且你丢失它的所有内容。所以我的建议是删除单例模式或在您的应用程序实例中使用它(我的意思是扩展应用程序 class)。
我有一个单例,用于存储来自不同片段的共享信息。
另一方面,我有一个生成守护线程的服务。该线程连接到事件总线并负责从外部服务器接收事件。当它收到一个新的事件时,更新单例并通过LocalBroadcastManager
.
从创建的没有同步的线程更新单例是否正确?我的意思是关于 Java/Android 内存模型。 (单例只能从此 service/thread 更新)。
这种方法好还是有更好的模式来实现它?
不,单例模式应该在Android中避免。为什么?因为单例模式使用静态实例字段。应该避免这样的静态字段,因为 OS 可以卸载你的 class 并且你丢失它的所有内容。所以我的建议是删除单例模式或在您的应用程序实例中使用它(我的意思是扩展应用程序 class)。