【发布时间】:2018-04-30 15:04:13
【问题描述】:
我一直被告知使用 Singleton 很糟糕。然而,Android Room 实现的每个示例似乎都使用了 Singleton 方法。有人可以解释一下为什么会这样吗?
谢谢
【问题讨论】:
-
使用单例并不是一个坏习惯。对于特定情况,这可能是一个很好的做法,例如实例化数据库(这里看起来就是您的情况)。那么为什么使用它来实例化数据库是一个好习惯呢?数据库对象上的单例会阻止任何人两次实例化您的数据库对象,这可能会导致棘手的错误和性能下降。这可能是一个很好的做法,只是取决于您使用它的原因和方式。
-
能否提供有关您在哪里看到使用 Singleton 实现 Android Room 的链接?
-
他们有不少,但这个来自Google Code Lab
-
我反对它的唯一原因是我一直被告知使用它们并不理想(难以测试,导致内存泄漏......)
标签: android design-patterns android-room android-architecture-components android-livedata