Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从守护进程线程更新单例_Android_Multithreading_Service_Singleton - Fatal编程技术网

Android 从守护进程线程更新单例

Android 从守护进程线程更新单例,android,multithreading,service,singleton,Android,Multithreading,Service,Singleton,我有一个单例,在这里我存储来自不同片段的共享信息 另一方面,我有一个生成守护进程线程的服务。此线程连接到事件总线,并负责从外部服务器接收事件。当它收到新事件时,更新单例并通过LocalBroadcastManager通知片段 从创建的线程更新单例而不同步是否正确?我的意思是关于Java/Android内存模型。(单例只能从此服务/线程更新) 这种方法是好的还是有更好的模式来实现它?不,单例模式应该在Android中避免。为什么?因为singleton模式使用静态实例字段。应该避免这样的静态字段,

我有一个单例,在这里我存储来自不同片段的共享信息

另一方面,我有一个生成守护进程线程的服务。此线程连接到事件总线,并负责从外部服务器接收事件。当它收到新事件时,更新单例并通过
LocalBroadcastManager
通知片段

从创建的线程更新单例而不同步是否正确?我的意思是关于Java/Android内存模型。(单例只能从此服务/线程更新)


这种方法是好的还是有更好的模式来实现它?

不,单例模式应该在Android中避免。为什么?因为singleton模式使用静态实例字段。应该避免这样的静态字段,因为操作系统可以卸载您的类,而您会丢失它的所有内容。因此,我的建议是删除singleton模式或在应用程序实例中使用它(我的意思是扩展应用程序类)。

谢谢,我将使用应用程序类而不是singleton,但是从线程更新其数据是安全的吗?(能见度问题)不,这不安全。您正在更新来自两个不同线程的相同数据,因此需要同步访问。如果答案对你合适,请记住接受。