访问共享首选项存储库中的 appcontext(架构)

Accessing appcontext in repository for shared preferences (Architecture)

根据官方指南,我目前正在努力研究 android 平台的架构组件:

在我的应用程序中,我目前需要存储一个字符串列表(名称)并在多个位置(活动和服务)访问它。我想到了 2 种可能的方法:

1) 将它们以逗号分隔存储在共享首选项中。
2) 创建一个实体和房间-table,名称作为唯一列。

我更喜欢第一种方法,因为我只需要将名称作为一个字符串来执行 contains() 操作。为此,使用房间数据库似乎更麻烦。

我的具体问题是:可以将 appcontext 存储在存储库-class(这是一个单例)中吗?或者我是否违反了任何 conventions/architectural 规则?或者实际为此使用空间会更好吗?

如果您想使用组件架构,并且您的 repository 需要与需要 context 的数据源进行通信,例如房间或 SharedPreferences ..您将需要从 AndroidViewModel 扩展您的 ViewModel,这将为您提供一个 context,您可以将其传递给您的 repository,以使用它访问 Room 数据库或 SharedPreferences .在存储库中使用 context 没有问题,即使它是单例,您已经需要它来访问 Room。