Singleton是将数据保存在Android应用程序内存的最佳方式吗?

时间:2017-07-03 11:24:19

标签: android singleton proper

我正在构建一个具有 User 类的Android应用程序,用于保存用户的个人资料信息。

创建用户时,它会保存在 SharedPreferences 文件中,以便我可以加载上次创建的用户,然后下次启动应用程序。我还有一个Singleton类,它保存新创建的用户的对象,以便其他类可以使用它。

我这样做是为了避免每次更改片段时都阅读 SharedPreferences 文件并且需要用户。

我的问题是:
是否正确使用Singleton将变量保存在整个应用程序的内存中? 它是打算用于那个还是有另一种方法来保持面向对象编程原则? 使用访问器方法在Activity中创建变量会更好吗?

2 个答案:

答案 0 :(得分:1)

是的,这是更好的方法。最好在Singleton对象中保留数据(如您所提到的情况),而不是每次从共享首选项访问。我们在app中使用单例用于会话目的,这意味着只要app正在运行变量,就可以访问数据。您可以在Activity级别创建变量,但这将是非常糟糕的方法。简而言之,您使用的方法是最好的方法。

答案 1 :(得分:0)

我会使用以下内容: 接口CurrentUser。 CurrentUser具有检索和更新用户的方法。用户可以存储在DB,首选项或混合中。 我会在需要时使用Dagger注入CurrentUser。 CurrentUser实现本身应该是一个单例,因为Dagger不保证单例的质量。 如果您的CurrentUser具有类似RxJava流或LiveData的内容,则可以使观察者保持最新状态。

作为Singleton的替代方案,您可能希望使用保留的片段实现Fragment Holder模式,但在您的情况下,Singleton似乎更好。只需确保使用接口和注入不会影响可测试性并保持组件分离。

相关问题