3

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

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

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

我的问题是:
使用 Singleton 是在整个应用程序的内存中保存变量的正确方法吗?
它是为此而设计的,还是有另一种保持面向对象编程原则的方法?
在 Activity 中创建变量而不是使用访问器方法会更好吗?

4

2 回答 2

2

我将使用以下内容:接口 CurrentUser。CurrentUser 具有检索和更新用户的方法。用户可能存储在数据库、偏好或混合中。我会在需要时使用 Dagger 注入 CurrentUser。CurrentUser 实现本身应该是一个单例,因为 Dagger 不保证单例的质量。如果您的 CurrentUser 有诸如 RxJava 流或 LiveData 之类的东西来使观察者保持最新状态,则可以加分。

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

于 2017-07-03T11:42:37.400 回答
1

Yes, it is better way to do so. And it is better to keep data(as you mentioned the case) in Singleton object rather access everytime from shared preference. We user singleton for session purpose in app that means as long as app is running variables data will be accessible.You can create variables on Activity level but that would be very bad approach. In short the approach you are using for your purpose is the best way.

于 2017-07-03T11:40:04.760 回答