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

Android MVVM框架搭建(一)ViewModel + LiveData + DataBinding

Android MVVM框架搭建(一)ViewModel + LiveData + DataBinding 前言 正文 一、创建项目 二、ViewModel使用 ① 绑定Activity ② 页面布局绘制...ViewModel:关联层,将Model和View进行绑定,只做和业务逻辑相关的工作,不涉及任何和UI相关的操作,不持有控件引用,不更新UI。...本文的主要目标是ViewModel 和 DataBinding。   从Google的官方说明来看,ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。...二、ViewModel使用   ViewModel的优势在于生命周期和数据持久化,那么它就适用于Activity和Fragment,其次就是异步回调,不会造成内存泄漏,再次就是对View层和Model层进行隔离...和LiveData。

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

    Android MVVM框架搭建(一)ViewModel + LiveData + DataBinding

    Android MVVM框架搭建(一)ViewModel + LiveData + DataBinding 前言 正文 一、创建项目 二、ViewModel使用 ① 绑定Activity ② 页面布局绘制...ViewModel:关联层,将Model和View进行绑定,只做和业务逻辑相关的工作,不涉及任何和UI相关的操作,不持有控件引用,不更新UI。...本文的主要目标是ViewModel 和 DataBinding。   从Google的官方说明来看,ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。...二、ViewModel使用   ViewModel的优势在于生命周期和数据持久化,那么它就适用于Activity和Fragment,其次就是异步回调,不会造成内存泄漏,再次就是对View层和Model层进行隔离...和LiveData。

    17K97

    单元测试框架spock和Mockito应用

    先介绍一下两位主角 spock是一款基于Groovy语言的单元测试框架,其基础也是Java的Junit,目前最新版已经到了2.0,但对Groovy和响应的Java版本要求较高,具体信息参考:Spock...Mockito是一个模拟测试框架,可以让你用优雅,简洁的接口写出漂亮的单元测试。Mockito可以让单元测试易于可读,产生简洁的校验错误。TDD测试驱动开发要求我们先写单元测试,再写实现代码。...在写单元测试的过程中,由于各种依赖的关系导致的阻碍,我们必需用到Mockito类似的框架来完成资源、对象的模拟。...} /** * 对于未指定mock的方法,spy默认会调用真实的方法,有返回值的返回真实的返回值,而mock默认不执行,有返回值的,默认返回null */ def "spy和mock...参考文章: Maven和Gradle中配置单元测试框架Spock Groovy单元测试框架spock基础功能Demo Groovy单元测试框架spock数据驱动Demo ---- 郑重声明:“FunTester

    2.4K50

    Android经典面试题之Kotlin中使用 LiveData、ViewModel快速实现MVVM模式

    MVVM 模式将应用程序的 UI 逻辑和业务逻辑分离,使用 LiveData、ViewModel 和 DataBinding 可以使代码更加模块化和可维护。...ViewModel 层:作为数据和 UI 的桥梁,负责预处理数据,使之适合 UI 显示。使用 LiveData 来观察数据变化。...使用 LiveData 和 MutableLiveData 来观察数据变化。 3、 View 层: 使用 DataBinding 进行数据绑定。...MainActivity 中通过 ViewModelProvider 初始化 ViewModel 并进行数据绑定。 优点 分离关注点:UI 和业务逻辑分离,增加代码的模块化和可维护性。...可测试性高:业务逻辑在 ViewModel 中,便于进行单元测试。 通过上述步骤和代码,你可以在 Kotlin 中实现一个基本的 MVVM 架构。实际开发中,可能还需要根据具体需求扩展和改进。

    32310

    ViewModel 和 LiveData:为设计模式打 Call 还是唱反调?

    一个通用的法则是,你的 ViewModel 中没有导入像 android.*这样的包(像 android.arch.* 这样的除外)。这个经验也同样适用于 MVP 模式中的 Presenter 。...❌ 不要让 ViewModel(或Presenter)直接使用 Android 框架内的类 条件语句、循环和一般的判定等语句应该在 ViewModel 或者应用程序的其他层中完成,而不是在 Activity...视图层通常是没有经过单元测试的(除非你用上了 Robolectric),所以在里面写的代码越少越好。View 应该仅仅负责展示数据以及发送各种事件给 ViewModel 或 Presenter。...由于 ViewModel 对 Android 一无所知,它也就不知道 Android 是多么频繁的干掉视图层的小伙伴。...使用 LiveData 在数据仓库和 ViewModel 中通信。就像 View 和 ViewModel 之间那样。 ✅ 考虑边界情况,泄漏以及长时间的操作会对架构中的实例带来哪些影响。

    3.1K30

    MVVM+数据绑定,让你的Android应用飞起来,MVVM+数据绑定技巧,打造Android应用的数据流水线!

    可测试性 ViewModel 可以通过使用单元测试轻松地进行单独测试,因为它不直接依赖于 Android 框架。 控制器和模型的测试相对容易,但视图的测试通常较为困难。...可测试性 MVVM 的 ViewModel 可以独立于 View 进行单元测试,因为它不依赖于 Android 的 UI 框架。...然而,在MVVM模式中,推荐使用LiveData或Flow作为主要的数据同步机制,因为它们与ViewModel和Android生命周期的集成更为紧密。...建议在ViewModel层引入异常处理逻辑,并记录关键的操作和事件日志,以便后续分析和调试。 6、单元测试与集成测试并重:测试是保证应用质量的重要手段。...单元测试主要针对ViewModel和Model层进行,确保每个单元的功能正确性;而集成测试则关注于整个应用系统的协同工作能力,包括View与ViewModel之间的交互、数据绑定等关键环节。

    13310

    ViewModels and LiveData- Patterns + AntiPatterns

    这可以提高可测试性、泄漏安全性和模块化。一般的经验法则是,确保在你的ViewModels中没有android.*的导入(android.arch.*等例外)。这同样适用于presenters。...视图通常没有单元测试(除非你使用Robolectric),所以代码行数越少越好。视图应该只知道如何显示数据并将用户事件发送到ViewModel(或Presenter)。这就是所谓的被动视图模式。...由于ViewModel并不了解Android,所以它不知道Android是如何喜欢频繁地杀死View的。这有一些好处。...事件的概念与LiveData存储和恢复数据的方式并不完全相符。考虑一个有以下字段的ViewModel。...使用LiveData在存储库和ViewModel之间进行通信,其方式类似于在View和ViewModel之间使用LiveData。 这点用Flow也可以解决。

    1.1K30

    今天撸一波Jetpack下的Lifecycle、ViewModel和LiveData

    里面的Lifecycle、ViewModel和LiveData这3个部分。...2、Lifecycle 根据官方文档,Lifecycle是一个抽象类,一个有Android 生命周期的对象附在它上面, 并且它持该对象的当前生命周期所处状态,所以其他对象可以观察到这种状态并做出相应的反应...2.1 Event 一个Event代表当Android 生命周期的对象的生命周期发生改变时候,会触发的一个生命周期事件(例如一个activity正在被恢复)。...同时ViewModel会在configuration 更改时自动保留数据。 ? 官方给的建议是将LiveData和ViewModel配合来使用。...但是,如果不存在,那么将创建一个新的ViewModel并将其添加到ViewModelStore中。 获取到ViewModel 就可以使用里面的属性和方法来进行操作了。

    1.6K10

    再谈协程之viewmodel-livedata难兄难弟

    前言 ViewModel和LiveData最早是Google提出的AAC架构中的重要成员,那么它为什么又和协程扯上关系了呢?...其实不能叫扯上关系吧,ViewModel和LiveData属于「架构组件」,而协程是「异步工具类」,ViewModel和LiveData搭上了协程这条快车道,让Google推了几年的AAC架构更加快的让人接受了...https://developer.android.com/topic/libraries/architecture/viewmodel https://developer.android.com/topic...的作用,它是连接ViewModel和Activity的桥梁,负责了数据的传递,所以,ViewModel和LiveData,完整了一个Activity的数据传递和数据生命周期的管理,将异步数据的请求流程,...RxJava轻量,而且将数据和UI分离,便于单元测试,不像MVP那样臃肿的同时,也更难体现分层架构的独立职责。

    1.1K40

    Google 推荐在 MVVM 架构中使用 Kotlin Flow

    UI Kotlin Flow 结合 Retrofit2 + Room 的混合使用 Kotlin Flow 与 LiveData 的使用 使用 Coil 加载图片 使用 ViewModel、LiveData...那么 Flow 为我们解决了什么问题,我主要从以下几个方面思考: LiveData 是一个生命周期感知组件,最好在 View 和 ViewModel 层中使用它,如果在 Repositories 或者...没有那么多傻傻分不清楚的操作符 简单的数据转换与操作符,如 map 等等 Flow 是对 Kotlin 协程的扩展,让我们可以像运行同步代码一样运行异步代码,使得代码更加简洁,提高了代码的可读性 易于做单元测试...Flow 是协程的扩展,如果要在 Room 和 Retrofit 中使用,Room 和 Retrofit 需要支持协程才可以,在 Retrofit >= 2.6.0 和 Room >= 2.1 版本都支持协程...flow { ... } 和 liveData{ ... } 内部都有一个 emit() 方法。

    4.4K21

    重新构建711的Android项目(二),架构的选择与实现

    因为随着代码和业务的增多,看到的混乱与不合理,会让人进入进退两难的境地,无法取舍。弃之可惜,从头来没精力。 这里选择了Android项目中流行的MVVM架构。...使用Android官方最新的LiveData和ViewModel,再加上Databinding。 单纯的使用Databinding实现的MVVM缺点太多,不好驾驭。...而使用LiveData和ViewModel,再加上Databinding的好处,可以做的让代码结构看起来特别的清晰,且View和Viewmode完全隔离。可以让前后端分离,也便于协作和单元测试。...Android官方推荐的大致框图: ? google Android的官方视频教程也强烈推荐使用ViewModel,使用它来持有Activity的所有数据。 ? ? 我的结构框图如下: ?...android.arch.lifecycle.ViewModel; public class CardViewModel extends ViewModel { private final

    45010

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

    这里引入 LiveData 架构组件 , 在 ViewModel 中 , 可以 通过 LiveData 将数据修改的信息发送给 视图 View , 通知 UI 界面进行修改 ; 场景举例 : 在 ViewModel...second.value = 0 } } 在该类中提供了 postValue 和 setValue 两个函数 , 在 UI 主线程 中调用 setValue 函数 , 在 非 UI 线程的子线程...+ LiveData 代码 自定义 ViewModel 子类继承 ViewModel , 在 ViewModel 中 , 定义 LiveData 类型的数据 , 此处选择使用 MutableLiveData..., 从 ViewModel 中获取 LiveData 显示到 UI 界面中 , 并为该 LiveData 设置 Observer 监听器 , 监听 LiveData 的数据变化 ; 启动 Timer...+ LiveData 代码 自定义 ViewModel 子类继承 ViewModel , 在 ViewModel 中 , 定义 LiveData 类型的数据 , 此处选择使用 MutableLiveData

    1.3K20

    【Jetpack】ViewModel + LiveData + DataBinding 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

    一、ViewModel + LiveData + DataBinding 核心要点 1、ViewModel 使用要点 ViewModel 架构组件 是 视图 View 与 数据模型 Model 之间 数据交互的...向布局中设置数据模型对象 activityMainBinding.viewmodel = viewModel 2、LiveData 使用要点 LiveData 是基于 ViewModel...ViewModel 中的数据发生了变化 , 如何将变化应用到视图组件中 , 在视图中显示最新的数据内容 , 此时就用到了 LiveData 组件 ; 在 ViewModel 的基础上 , 通过 引入 LiveData..., 如果 ViewModel 中使用了 LiveData 变量 , 则变成了 DataBinding + ViewModel + LiveData 组合用法 ; DataBinding 使用核心要点...LiveData + DataBinding 代码示例 ---- 代码示例 : GitHub : https://github.com/han1202012/ViewModel_LiveData_DataBinding

    1.6K20

    5个Android经典面试题

    描述Android中的MVC、MVP和MVVM架构模式,并解释它们的区别。 MVC:Model-View-Controller,模型负责业务逻辑,视图负责显示,控制器负责业务逻辑和视图之间的交互。...MVVM:Model-View-ViewModel,ViewModel负责业务逻辑和数据,View只负责显示,ViewModel和View通过数据绑定进行交互。...MVVM通过数据绑定减少了Presenter的逻辑,使得View和ViewModel更易于测试和维护。 3. 如何在Android中实现组件化开发? 组件化开发是将应用分解成多个可重用和可测试的模块。...解释Android中的热修复技术原理。 热修复技术允许开发者在不发布新版本的情况下修复应用中的问题。常见的热修复技术包括: 动态加载类:在运行时动态加载和替换类文件。...如何在Android中实现单元测试和集成测试? 单元测试和集成测试是确保应用质量的重要手段。在Android中,可以通过以下方式实现: 单元测试:使用JUnit和Mockito等框架来测试独立模块。

    10810

    Android面试题之Kotlin Jetpack的三大核心组件

    ViewModel 和 LiveData 是 Android Jetpack 组件库中的两个核心组件,它们能帮助开发者更有效地管理 UI 相关的数据,并且能够在配置变更(如屏幕旋转)时保存和恢复 UI...ViewModel作用 瞬态数据丢失的恢复,比如横竖屏 异步调用的内存泄漏 处理类膨胀提高维护难度和测试难度 使视图和数据能够分离 是介于视图View和数据Model之间的桥梁 LiveData的作用...用于ViewModel数据返回时通知View更新,是ViewModel和View之间的桥梁 那么如何在 Kotlin 中正确优雅地使用 ViewModel 和 LiveData 呢。...创建 ViewModel 类 ViewModel 用于存储和管理与 UI 相关的数据,它能在配置变更时继续存在。...同时结合Lifecycle,通过结构化和简化生命周期管理,使得生命周期感知组件在 Android 开发中更为高效,也有助于减少潜在的内存泄漏和其他生命周期相关的问题。

    19710

    从15k到40k:资深Android必须掌握的3种架构设计模式

    大家好,我是稳稳,一个曾经励志用技术改变世界,现在为随时失业做准备的中年奶爸程序员,与你分享生活和学习的点滴。 眼下正是奋战金三银四的时候,学习不能停啊!...数据冲击:据2025年腾讯技术报告,40%高级Android开发者因架构设计缺陷被大厂一票否决。...SDK导致单元测试无法运行 正确实践: // 领域层纯Kotlin代码 class PaymentUseCase( private val repo: PaymentRepository...状态管理:用SavedStateHandle解决屏幕旋转后LiveData重置问题 2. 双向绑定:通过BindingAdapter实现自定义View与ViewModel通信 3....// 错误案例:直接使用GlobalScope造成泄漏 三、自测你的架构能力层级 Level 1(15k):能在Activity中完成功能开发 Level 2(25k):会使用MVVM+LiveData

    4410
    领券