在我的应用程序中,我使用ViewModels为视图提供数据,数据存储库为viewmodel提供数据,并处理与数据源(如数据库、internet API和首选项)的通信。
现在android使用特殊的片段来处理设置。这些特殊片段通过直接写入SharedPreferences来处理设置数据。因此它们不符合MVVM体系结构。我还从API中读取数据,从中提取一些初始设置数据并将其保存在自己的PreferenceFile中。用户应该能够在一定的限制范围内更改这些提取的数据。所以我使用键,值对,但只是在另一个文件。这种分离使我有可能删除提取的数据而不丢失其他数据,例如,因为accesstoken被删除了,所以可以将用户从应用程序中注销。
我可以写一个正常的片段来处理设置,但这是建议吗?还是有其他方法可以使用Android,内置设置片段,并且仍然按照MVVM体系结构保持数据分离?
大部分都算出来了。PreferenceFragmentCompat和Preferences实际上隐藏了数据存储的实现,因此遵循MVVM体系结构和职责分离被认为是正确的。在处理首选项的datarepository中,可以实现OnPreferenceChangedListener,它重新加载首选项,并通过LiveData将首选项提供给ViewModel。
为了分离我的特殊数据,可能可以编写一个新的preferencedatastore。