首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

改造 Android 官方架构组件 ViewModel

直到 11 月份 Android 官方架构组件正式版发布, 并且 Google 也在 Support Library v26.1.0 以后的版本中内嵌了 Android 官方架构组件中的生命周期组件,...官方架构组件其实并没有想象的那么高深, 原理反而是我们在日常开发中都会用到的知识点, 那我就在文章的开头先简单的介绍下 Android 官方架构组件中的这几个组件 Lifecycles 生命周期组件是...Android 官方架构组件中的核心组件, 它可以使各种实例作为观察者与 Activity 和 Fragment 等具有生命周期特性的组件绑定在一起, LiveData 和 ViewModel 都是基于此组件...ViewModel 有两个功能, 第一个功能可以使 ViewModel 以及 ViewModel 中的数据在屏幕旋转或配置更改引起的 Activity 重建时存活下来, 重建后数据可继续使用, 第二个功能可以帮助开发者轻易实现...ViewModel 中有一个功能让我十分惊艳, 也十分好奇, 它可以使 ViewModel 以及 ViewModel 中的数据在屏幕旋转或配置更改引起的 Activity 重建时存活下来, 重建后数据可继续使用

77310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    架构组件之 ViewModel | 中文教学视频

    ViewModel 用于提供和管理 UI 界面的数据。...架构组件之 ViewModel | 中文教学视频 在视频的代码示例中,我们使用了 Kotlin 来创建 ViewModel, 创建 ViewModel 方法如下: 在 build.gradle 文件里加入生命周期管理库...,使用 ViewModel 来管理这些数据。...另,生命周期管理库 LiveData 和 Room 视频即将上线,敬请期待 更多详细内容介绍,请访问以下文档链接 架构组件的官方开发者文档 ViewModel 的文档 应用程序架构指南 使用生命周期管理库的架构组件实例...-Java 使用生命周期管理库的架构组件实例 - Kotlin 架构组件实例 ViewModelFactory 实例 Android 生命周期备忘录 视频播放列表地址 腾讯视频链接 优酷链接 YouTube

    1.5K30

    【Jetpack】ViewModel 架构组件 ( 视图 View 和 数据模型 Model | ViewModel 作用 | ViewModel 生命周期 | 代码示例 | 使用注意事项 )

    文章目录 一、Activity 遇到的问题 二、视图 View 和 数据模型 Model 三、ViewModel 架构组件作用 四、ViewModel 代码示例 1、ViewModel 视图模型 2...架构组件作用 ---- 为了解决上述问题 , 提出了 ViewModel 架构组件 , 该组件 是 视图 View 和 数据模型 Model 之间 的 沟通桥梁 ; 借助 ViewModel , 视图...架构中 , 数据 不由 View 直接进行管理 , 而是 由 ViewModel 进行管理 ; 当 Activity 屏幕旋转 , 销毁时 , 只会销毁 Activity 组件 , 不会将 ViewModel...以及 数据模型 Model 销毁 ; Activity 中的组件 获取数据时 , 不直接从 数据模型 Model 中获取 , 而是 从 ViewModel 架构组件中获取 ; ViewModel 作用...关联时 , 开始绑定 ViewModel , Activity 组件中 绑定 ViewModel 代码如下 ; // 获取 ViewModel myViewModel

    87220

    Unity应用架构设计(3)——构建View和ViewModel的生命周期

    本文将谈谈怎样构建View和ViewModel的生命周期。...这理所应当交给ViewModel去处理,ViewModel只要知道View什么阶段让我去拿数据即可。...所以对应的ViewModel也有生命周期,它对应了View的生命周期,ViewModel的生命周期包括: 初始化操作 View在显示前处理的逻辑 View在显示后时处理的逻辑 View在隐藏前处理的逻辑...View在隐藏后处理的逻辑 View被销毁时应该处理的逻辑 构建生命周期 有了上述的分析之后,就需要落实,如何去构建View和ViewModel的生命周期了。...小结 本文介绍了怎样为View/ViewModel构建自定义的生命周期,MonoBehaviour 虽然有自己的生命周期,但不够细腻,我们完全可以扩展自己的生命周期,实现对需求的定制。

    1.1K50

    【Jetpack】LiveData 架构组件 ( LiveData 简介 | LiveData 使用方法 | ViewModel + LiveData 示例 )

    一、LiveData 简介 ---- 在 视图 View 与 数据模型 Model 通过 ViewModel 架构组件 进行绑定后 , 可以立即 将 ViewModel 中的数据设置到 UI 界面中..., 运行过程中 , 在 UI 界面中 , 可以 修改 ViewModel 中的值 , 并 将新的值设置在 视图 View 中 ; 但是 , 如果 数据是在 ViewModel 中发生的改变 , 那么如何...这里引入 LiveData 架构组件 , 在 ViewModel 中 , 可以 通过 LiveData 将数据修改的信息发送给 视图 View , 通知 UI 界面进行修改 ; 场景举例 : 在 ViewModel...+ LiveData 代码 自定义 ViewModel 子类继承 ViewModel , 在 ViewModel 中 , 定义 LiveData 类型的数据 , 此处选择使用 MutableLiveData...代码 自定义 ViewModel 子类继承 ViewModel , 在 ViewModel 中 , 定义 LiveData 类型的数据 , 此处选择使用 MutableLiveData 数据类型

    1.3K20

    Unity应用架构设计(2)——使用中介者模式解耦ViewModel之间通信

    每个View/ViewModel依赖其余对象,而本身又被其他View/ViewModel强引用。这显然不是好的实践方式。 还记得我在上一篇文章的对于MVVM的描述吗?...MVVM的核心思想就是解耦,View与ViewModel应该感受不到彼此的存在。ViewModel与ViewModel之间也应该感受不到彼此的存在。...我们需要添加一个中介者,每个ViewModel Publisher对象都会在自己状态改变时,告诉中介者。每个ViewModel Subscribers 都需要告诉中介者请求来时进行怎样的响应。...= null) { //转发 _messages[name](sender, args); } } } 解耦ViewModel...("ColorChanged",ToggleHandler); ViewModel A在自己状态改变时,Pulish状态改变的消息给中介者: MessageAggregator.Instance.Publish

    1.4K100

    用 Mongoose 插件记录Node.js API日志

    那么如何创建一个 Mongoose 插件,以更清洁的方式为你进行记录并简化 API 日志? Mongoose 中的插件是什么? 在 Mongoose 中,模式是可插入的。...Diff: 这是主要属性,它是两个 JSON 的 diff 如果你希望对自己的应用程序有意义,可以添加更多字段,也可以根据需要更改和升级架构。...这是我们的模型:models/log.js const mongoose = require('mongoose') const Schema = mongoose.Schema const { ObjectId...现在我们需要使用架构上可用的 init 和 save 方法。 this.isNew():如果你正在创建新文档,那么只需返回 next()中间件。...你还可以通过在架构模型中初始化它来将其用于特定架构。 const mongoose = require('mongoose') mongoose.plugin(require('.

    2.8K40

    “终于懂了“系列:Jetpack AAC完整解析(四)MVVM - Android架构探索!

    Jetpack MVVM标准推荐架构 各模块对应MVVM架构: View层:Activity/Fragment ViewModel层:Jetpack ViewModel + Jetpack LivaData...根据上面的架构图,就是ViewModel了,所以我们创建 UserListViewModel 继承自 ViewModel,并且把 用户信息列表 以 LiveData呈现。...应用中的其他组件可以使用此存储器监控对象的更改,而无需在它们之间创建明确且严格的依赖路径。...另外,我们也没有添加任何逻辑来处理配置更改(例如,用户旋转设备的屏幕)。...UserListViewModel 会在配置更改后自动恢复,所以一旦创建新的 Activity,它就会接收相同的 ViewModel 实例,并且会立即使用当前的数据调用回调。

    2.1K20

    ViewModel:持久化、onSaveInstanceState()、UI 状态恢复和 Loader

    ViewModel 允许数据在例如屏幕旋转这样的配置更改后依然保留。...下面是使用了 ViewModel 后比 onSaveInstanceState() 之外的更多的一些好处: ViewModel 鼓励良好的架构设计。...ViewModel 与其他架构组件 LiveData 和 Room 一起使用可以替代 Loader。ViewModel 保证配置更改后数据不丢失。LiveData 保证 UI 与数据同步更新。...创建仓库类来支持一个可伸缩的加载、缓存和同步数据的架构。 想要更多 ViewModel 相关的干货?...如果你有关于 ViewModel 或者任何架构组件的问题,请查看我们的反馈页面。关于本系列的任何问题,敬请留言。 掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。

    1K20

    你真的了解ViewModel的设计思想吗?

    Android架构组件中的ViewModel应运而生。本文将深入探讨ViewModel的原理,并介绍其高级运用,旨在帮助开发者更好地理解和运用这一组件。 什么是ViewModel?...在Android中,ViewModel通常用于存储和管理与UI相关的数据,以确保这些数据在屏幕旋转或配置更改等情况下不会丢失。 原理解析 ViewModel的原理是基于ViewModelStore类。...持久性存储: ViewModel可以存储大量的数据,并且在配置更改时仍然保持活动。这是通过将ViewModel与UI控制器分离,将其保存在ViewModelStore中实现的。...这个ViewModel将在配置更改时保持活动,确保数据不会丢失。 高级运用 使用SavedStateHandle SavedStateHandle是一个可用于在配置更改后保持数据的工具。...结语 通过深入理解ViewModel的原理和高级运用,我们可以更好地利用这一强大的架构组件。ViewModel的设计模式和生命周期感知使其成为Android开发中不可或缺的一部分。

    32610

    区域设置更改和 AndroidViewModel 反面模式

    在 ViewModel 中,如果要公开来自资源(字符串、可绘制文件、颜色……)的数据,则必须着重考虑 ViewModel 对象而忽视配置更改,例如区域设置更改。...当用户更改其区域设置时,活动将重新被创建,但不创建 ViewModel 对象。 AndroidViewModel 是已知应用程序上下文的 ViewModel 的子类。...让我们看看跟踪器中基于此问题的示例:在系统区域设置更改时更新 ViewModel 。...由于视图(活动、片段等)具有生命周期意识,因此它将在配置更改后重新创建,以便正确地重新加载资源。...我们在以 Java 为基础的 Android 架构存储库中解决了这个问题 Java 以及在Kotlin 分支上。我们也把资源转移到 数据绑定布局。

    12510

    区域设置更改和 AndroidViewModel 反面模式

    在 ViewModel 中,如果要公开来自资源(字符串、可绘制文件、颜色……)的数据,则必须着重考虑 ViewModel 对象而忽视配置更改,例如区域设置更改。...当用户更改其区域设置时,活动将重新被创建,但不创建 ViewModel 对象。 ? AndroidViewModel 是已知应用程序上下文的 ViewModel 的子类。...让我们看看跟踪器中基于此问题的示例:在系统区域设置更改时更新 ViewModel 。...由于视图(活动、片段等)具有生命周期意识,因此它将在配置更改后重新创建,以便正确地重新加载资源。...我们在以 Java 为基础的 Android 架构存储库中解决了这个问题 Java 以及在Kotlin 分支上。我们也把资源转移到 数据绑定布局。

    1.2K60
    领券