当前位置: 首页 > 知识库问答 >
问题:

PreferencesFragment和MVVM体系结构

路阳华
2023-03-14

在我的应用程序中,我使用ViewModels为视图提供数据,数据存储库为viewmodel提供数据,并处理与数据源(如数据库、internet API和首选项)的通信。

现在android使用特殊的片段来处理设置。这些特殊片段通过直接写入SharedPreferences来处理设置数据。因此它们不符合MVVM体系结构。我还从API中读取数据,从中提取一些初始设置数据并将其保存在自己的PreferenceFile中。用户应该能够在一定的限制范围内更改这些提取的数据。所以我使用键,值对,但只是在另一个文件。这种分离使我有可能删除提取的数据而不丢失其他数据,例如,因为accesstoken被删除了,所以可以将用户从应用程序中注销。

我可以写一个正常的片段来处理设置,但这是建议吗?还是有其他方法可以使用Android,内置设置片段,并且仍然按照MVVM体系结构保持数据分离?

共有1个答案

苏乐
2023-03-14

大部分都算出来了。PreferenceFragmentCompat和Preferences实际上隐藏了数据存储的实现,因此遵循MVVM体系结构和职责分离被认为是正确的。在处理首选项的datarepository中,可以实现OnPreferenceChangedListener,它重新加载首选项,并通过LiveData将首选项提供给ViewModel。

为了分离我的特殊数据,可能可以编写一个新的preferencedatastore。

 类似资料:
  • 我正在尝试遵循Android架构原则,并希望您在我的FireStore数据库上实现它们。 目前,我有一个存储库,它处理所有带有底层数据的查询。我有一个,它需要一个文档中字段中的键,我想知道检索此数据的最佳方法是什么。在我的前一个问题中,Alex Mamo建议使用与结合使用,因为从Firestore检索数据是。 这种方法似乎是可行的,但我不确定如何将这个中的数据提取到我的的本地变量。如果我希望使用这

  • 我是WPF和MVVM的新手。这是我通常为ASP.NET应用程序设置体系结构的方式: 数据层 我通常使用ORM工具将数据持久化到数据库中。 业务层 这包括我所有的商业模式和商业逻辑。 服务层 这一层用作进入后端系统的入口点。(有时通过周转基金)。这一层负责将业务模型转换为视图模型。 表示层 这一层用于表示逻辑。 我知道MVVM的视图是.xaml文件并驻留在WPF应用程序中。但是,我对“模型”和“Vi

  • Ceph 独一无二地用统一的系统提供了对象、块、和文件存储功能,它可靠性高、管理简便、并且是自由软件。 Ceph 的强大足以改变贵公司的 IT 基础架构、和管理海量数据的能力。Ceph 可提供极大的伸缩性——供成千用户访问 PB 乃至 EB 级的数据。 Ceph 节点以普通硬件和智能守护进程作为支撑点, Ceph 存储集群组织起了大量节点,它们之间靠相互通讯来复制数据、并动态地重分布数据。 Cep

  • 冯·诺依曼体系结构 计算机处理的数据和指令一律用二进制数表示 顺序执行程序 计算机运行过程中,把要执行的程序和处理的数据首先存入主存储器(内存),计算机执行程序时,将自动地并按顺序从主存储器中取出指令一条一条地执行,这一概念称作顺序执行程序。 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。 数据的机内表示 二进制表示 机器数 由于计算机中符号和数字一样,都必须用二进制数串来表

  • 我正在开发一个应用程序,有一个标签布局作为图像。 我想使用MVVM体系结构和数据绑定库,但我对这个框架是新的。 我可以在不使用MVVM的情况下,通过使用ViewPager设置选项卡布局来完成此操作。 没有MVVM和数据绑定的普通选项卡布局: activity_main.xml: mainactivity.java: MVVM中的选项卡布局: 当将MVVM与数据绑定库一起使用时,我们将不得不为选项卡

  • 主要内容:1. Data Access/Integration(数据访问/集成),2. Web 模块,3. Core Container(Spring 的核心容器),4. AOP、Aspects、Instrumentation 和 Messaging,5. Test 模块Spring 框架基本涵盖了企业级应用开发的各个方面,它包含了 20 多个不同的模块。 图1:Spring架构图 上图中包含了 Spring 框架的所有模块,这些模块可以满足一切企业级应用开发的需求,在开发过程中可以根据需求有选