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

时间:2018-08-21 21:12:30

标签: android sharedpreferences android-room android-architecture-components

根据官方指南,我目前正在尝试围绕android平台的架构组件:

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

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

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

我的具体问题是:是否可以将appcontext存储在存储库类(单例)中,还是我违反了任何约定/体系结构规则?还是为此实际使用空间会更好?

1 个答案:

答案 0 :(得分:2)

如果您想使用组件架构,并且您的存储库需要与需要上下文的数据源进行通信,例如房间或共享首选项..您需要从AndroidViewModel扩展您的viewmodel,它将为您提供一个上下文您可以传递到存储库以使用它来访问Room数据库或共享首选项。在存储库中使用上下文是没有问题的,即使它是单例的,您也已经需要它来访问Room。