ViewModel和LiveData问题思考与解答】的更多相关文章

嗨,大家好,面试真题系列又来了,今天我们说说MVVM架构里的两大组件:ViewModel和LiveData. 还是老样子,提出问题,做出解答. ViewModel 是什么? ViewModel 为什么被设计出来,解决了什么问题? 说说ViewModel原理. LiveData 是什么? LiveData 为什么被设计出来,解决了什么问题? 说说LiveData原理. ViewModel 是什么,说说你所理解的ViewModel? 如果看过我上一篇文章的小伙伴应该都有所了解,ViewModel是M…
又来更新啦,Android面试题<思考与解答>11月刊奉上. 说说View/ViewGroup的绘制流程 View的绘制流程是从ViewRoot的performTraversals开始的,它经过measure,layout,draw三个过程最终将View绘制出来. performTraversals会依次调用performMeasure,performLayout,performDraw三个方法,他们会依次调用measure,layout,draw方法,然后又调用了onMeasure,onLa…
原文作者: Jose Alcérreca 原文地址: ViewModels and LiveData: Patterns + AntiPatterns 译者:秉心说 View 和 ViewModel 分配责任 理想情况下,ViewModel 应该对 Android 世界一无所知.这提升了可测试性,内存泄漏安全性,并且便于模块化. 通常的做法是保证你的 ViewModel 中没有导入任何 android.*,android.arch.* (译者注:现在应该再加一个 androidx.lifecyc…
要看本系列其他文章,可访问此链接Jetpack架构学习 | Stars-One的杂货小窝 原文地址:Jetpack架构组件学习(2)--ViewModel和Livedata使用 | Stars-One的杂货小窝 Jetpack架构推荐使用MVVM结构,为此推出了几个MVVM的组件库供我们开发者快速接入,首先要讲的就是ViewModel 个人理解:Activity为View,VM就是ViewModel,负责数据的逻辑处理,Model则是数据源 ViewModel 介绍 ViewModel能做什么?…
转自:https://www.jianshu.com/p/982545e01d0a 1.概述 在I / O '17的时候,其中一个重要的主题是Architecture Components.这是一个官方的新库.旨在帮助开发者设计"健壮,可测试和可维护"的应用程序.简而言之,这个库可以帮助开发者更好地处理生命周期事件和配置更改时的数据持久性,同时还能帮助开发者创建更好的体系结构应用程序,并避免难以维护和测试的膨胀类. 其官方文档在这里:Android Architecture Compo…
本文基于SDK 29 一.ViewModel与LiveData的作用: 1.viewModel: 数据共享,屏幕旋转不丢失数据,并且在Activity与Fragment之间共享数据. 2.LiveData: 感知生命周期并且通知观察者刷新,防止内存泄漏. 二.用法 三.原理: 1.ViewModel: ViewModelProviders.of(this).get(MyViewModel::class.java) 我们通过这个方法来构造ViewModel. @NonNull @MainThrea…
ViewModel ViewModel的引入 如果系统销毁或重新创建界面控制器,则存储在其中的任何临时性界面相关数据都会丢失.例如,应用的某个 Activity 中可能包含用户列表.因配置更改而重新创建 Activity 后,新 Activity 必须重新提取用户列表.对于简单的数据,Activity 可以使用 onSaveInstanceState() 方法从 onCreate() 中的捆绑包恢复其数据,但此方法仅适合可以序列化再反序列化的少量数据,而不适合数量可能较大的数据,如用户列表或位图…
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com 目录 目录LiveDataLiveData 简介LiveData 功能概览LiveData 的优点LiveData 使用步骤TransformationsmapswitchMapMediatorLiveDataViewModel基本介绍适用场景ViewModel 的 onCleared 调…
本文涉及的源码版本如下: com.android.support:appcompat-v7:27.1.1 android.arch.lifecycle:extensions:1.1.1 android.arch.lifecycle:viewmodel:1.1.1 android.arch.lifecycle:livedata:1.1.1 什么是ViewModel, 以及工作原理 ViewModel用于存储和管理UI相关的数据,ViewModel有自己生命周期,会根据fragment,activi…
Lifecycle Lifecycle组件包括LifecycleOwner.LifecleObserver,能方便监听Activity或者Fragment的生命周期. 步骤: 1.实现LifecycleObserver接口 实现DefaultLifecycleObserver接口,然后重写里面生命周期方法: 直接实现LifecycleObserver接口,然后通过注解的方式来接收生命周期的变化: 对于这两种形式,Lifecycle.java文档中是建议使用第一种方式,因为文档中说明了,随着Jav…
前提:导入所有依赖,开启DataBinding app的build.gradle android { defaultConfig { ... dataBinding { enabled true } } } dependencies { def lifecycle_version = "2.1.0" // ViewModel and LiveData implementation "androidx.lifecycle:lifecycle-extensions:$lifecy…
在上一篇博客中,笔者分享了一些从页面整体的角度对页面与ViewModel的思考.在本文中笔者希望从相对细节的角度分享一些对页面与ViewModel的思考. 比如,当我们在更新View Model中的绑定数据时,应该怎样更新呢?简单的自然可以用新的数据实例直接替代旧的,但是这样容易造成UI界面闪烁.尤其是绑定数据是一个列表的情况下,如果整个列表被替换,可以非常明显的看到列表"一闪".这样的用户体验无疑是不理想的.那么我们在更新View Model中绑定的数据实例时,可以采用差异更新的方法…
依赖 implementation 'android.arch.lifecycle:extensions:1.1.1' implementation 'com.squareup.retrofit2:retrofit:2.5.0' implementation 'com.squareup.retrofit2:converter-gson:2.5.0' implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0' implementati…
1.官方文档 MVVM 官方文档: https://developer.android.com/jetpack/docs/guide ViewModel 文档: https://developer.android.com/topic/libraries/architecture/viewmodel ViewModel保存状态:    https://developer.android.com/topic/libraries/architecture/viewmodel-savedstate Li…
这篇文章面向的是已经掌握app开发基本知识,想知道如何开发健壮app的读者. 注:本指南假设读者对 Android Framework 已经很熟悉.如果你还是app开发的新手,请查看 Getting Started 系列教程,该教程涵盖了本指南的预备知识. app开发者面临的常见问题 跟传统的桌面应用开发不同,Android app的架构要复杂得多.一个典型的Android app是由多个app组件构成的,包括activity,Fragment,service,content provider以…
前言 上篇文章我给大家分享了我对Android架构的理解,从思想层面去讲述架构的演进过程.很多小伙伴读完后拍手叫好,表示还想听我讲一下对Jetpack 架构的看法,本着帮人帮到底的精神,今天我将再次动笔 尽量从本质上讲清楚Jetpack 架构存在的意义,以及解决的问题. 知识储备:需要对Lifcycle.LiveData.ViewModel.DataBinding有基本了解 作者 Bezier 目录 1.1 为什么要做生命周期绑定? 1.2 Lifecycle解决了哪些问题? 2.1 观察者模式…
想在金九银十找工作的现在可以开始准备了,这边给大家分享一下面试会遇到的问题. 找工作还是需要大家不要担心,由于我们干这一行的接触人本来就不多,难免看到面试官会紧张,主要是因为怕面试官问的答不上来,答不上了千万不要胡扯一些.有了这篇文章,就不一样了,借鉴这位读者分享的面试经历,大家可以有针对性的开始准备刷题了. 下面分享下这位读者的面试内容: 一面 60min 总的来说,一面侧重考察基础(Java.Android.数据结构与算法.网络.操作系统.数据库),流程走下来到问重点算法的时候,只要求讲清楚…
01 36岁Android开发,为公司工作8年,昨天HR说公司不准备续约 前天晚上,有个读者给我留言,讲述了他自己比较气愤的一件事,感觉自己委屈又不值. 这位朋友不愿意透露姓名,就叫他H先生吧. H先生是典型的学霸,大学也是211的牌子,又是计算机专业. 研究生毕业以后就进入了现在的公司当了一名Android开发. 当时是有3家企业接收他的,他选择了当时效益不错,而且有发展前景的现在的公司. 进入公司以后,他就像所有的程序员一样开始了加班加点赶程序的日子. 02 辛苦付出8年,为公司解决无数个技…
Android Weekly Issue #258 May 21st, 2017 Android Weekly Issue #258 本期内容: 围绕着Google I/O的热潮, 本周的posts除了几篇小工具和软件设计原则的讨论, 其他都是在说Android Architecture Components和Kotlin. ARTICLES & TUTORIALS DebugPort 2.0 REPL(Read Eval Print Loop)是在命令行界面中, 读取每一行输入, 执行, 然后…
面对越来越复杂的 App 需求,Google 官方发布了Android 框架组件库(Android Architecture Components ).为开发者更好的开发 App 提供了非常好的样本.这个框架里的组件是配合 Android 组件生命周期的,所以它能够很好的规避组件生命周期管理的问题.今天我们就来看看这个库的使用. 通用的框架准则 官方建议在架构 App 的时候遵循以下两个准则: 关注分离 其中早期开发 App 最常见的做法是在 Activity 或者 Fragment 中写了大量…
November 26th, 2017 Android Weekly Issue #285 本周包含好几篇Kotlin的文章,如通过Property Delegate实现SharedPreference的自动读写,Coroutines编写Weather应用的终结篇,还有关于如何写好代码的方法论的Tips,以及MVI的全面介绍,如果不喜欢Mosby的approach,可能这个作者从头到尾实现的更有看头. 当然如果想了解Android最流行的pipeline如何开发,可以去看一篇关于Devops的文…
一.MVC 设计图: 可能由于MVP.MVVM的兴起,MVC在android中的应用变得越来越少了,但MVC是基础,理解好MVC才能更好的理解MVP,MVVM.因为后两种都是基于MVC发展而来的. 1.MVC,全称Model-View-Controller,即模型-视图-控制器. 具体如下: View:对应于布局文件 Model:业务逻辑和实体模型 Controllor:对应于Activity 但是View对应于布局文件,其实能做的事情特别少,实际上关于该布局文件中的数据绑定的操作,事件处理的代…
本学期将继续进行高等代数每周一题的活动.计划从第一教学周开始,到第十五教学周结束,每周的周末公布一道思考题(预计15道),供大家思考和解答.每周一题将通过“高等代数官方博客”(以博文的形式)和“高等代数在线课程18级课群”(以课群话题的形式)这两个渠道同时发布.有兴趣的同学可以将每周一题的解答写在纸上.拍成图片,并上传到每周一题对应的课群话题中.本人会对每周一题的解答进行批改和评价,并将优秀解答标记出来推荐给全班同学. [问题2019S01]  设 $A$ 为 $n$ 阶复方阵, 满足 $(A'…
本学期将继续进行高等代数每周一题的活动.计划从第一教学周开始,到第十六教学周为止(根据法定节假日安排,中间个别周会适当地停止),每周的周末将公布1道思考题(共16道),供大家思考和解答.每周一题通过“谢启鸿高等代数官方博客(以博文的形式)”和“高等代数在线课程17级课群(以课群话题的形式)”这两个渠道同时发布,并通过17级高等代数微信群及时通知大家.有兴趣的同学可以将每周一题的解答写在纸上,并拍成图片上传到该每周一题对应的课群话题中.谢启鸿老师或研究生助教会对每周一题的解答进行批改和评价,并将优…
本学期将继续进行高等代数每周一题的活动.计划从第二教学周开始,到第十六教学周为止(根据法定节假日安排,中间个别周会适当地停止),每周的周末将公布1-2道思考题,供大家思考和解答.每周一题通过“谢启鸿高等代数官方博客(以博文的形式)”和“高等代数在线课程17级课群(以课群话题的形式)”这两个渠道同时发布,并通过17级的班级微信群及时通知大家.有兴趣的同学可以将每周一题的解答写在纸上,在课堂上交给谢启鸿老师,或将纸质解答拍成图片,作为附件上传到该每周一题对应的课群话题中作为解答.谢启鸿老师或研究生助…
每周一题的说明 一.本学期高代II的每周一题面向16级的同学,将定期更新(一般每周的周末公布下一周的题目); 二.欢迎16级的同学通过微信或书面方式提供解答图片或纸质文件给我,优秀的解答可以分享给大家: 三.请大家先独立思考和解答每周一题,实在做不出的情况下,可以点击参考答案进行学习. *********************************************************** [问题2017S01]  设 $A$ 是 $n$ 阶对合阵, 即 $A^2=I_n$, 证明…
Android应用架构简介 对于经过过构建app的Android开发人员来说, 现在是时候了解一下构建鲁棒, 质量高的应用的最佳实践和推荐架构了. 这篇文章假设读者对Android framework比较熟悉. OK, let's begin! App开发人员面临的常见问题 传统的桌面开发, 在大多数情况下, 拥有一个来自Launcher快捷键的单独入口点, 并在独立的整体进程中运行. 而Android应用则拥有更多复杂的结构. 典型的Android应用由多个应用构件组成, 包括Activiti…
官方给的实践指南,很有实际的指导意义,  特别是对一些小公司,小团队,给了很好的参考意义. 原文地址: https://developer.android.com/topic/libraries/architecture/guide.html#building_the_user_interfacehttps://developer.android.com/samples/index.html?language=kotlin   kotlin版本的官方demo翻译地址:  http://geek.…
此指南适用于那些曾经或现在进行Android应用的基础开发,并希望了解和学习编写Android程序的最佳实践和架构.通过学习来构建强大的生产级别的应用. 注意:此指南默认你对Android开发有比较深的理解,熟知Android Framework.如果你还只是个Android开发新手,那么建议先学习下Android的基础知识. Android程序员面临的问题 传统的桌面应用程序开发在大多数情况下,启动器快捷方式都有一个入口点,并作为一个单一的过程运行,但Android应用程序的结构更为复杂.典型…
https://developer.android.com/topic/libraries/architecture/index.html ViewModel 有LiveData Activity 监听(observe) LiveData, LiveData有变化通知Activity 1.ViewModel定义 Since these objects might be destroyed or re-created by the operating system, any data you ho…