原文作者: Jose Alcérreca 原文地址: ViewModels and LiveData: Patterns + AntiPatterns 译者:秉心说 View 和 ViewModel 分配责任 理想情况下,ViewModel 应该对 Android 世界一无所知.这提升了可测试性,内存泄漏安全性,并且便于模块化. 通常的做法是保证你的 ViewModel 中没有导入任何 android.*,android.arch.* (译者注:现在应该再加一个 androidx.lifecyc…
嗨,大家好,面试真题系列又来了,今天我们说说MVVM架构里的两大组件:ViewModel和LiveData. 还是老样子,提出问题,做出解答. ViewModel 是什么? ViewModel 为什么被设计出来,解决了什么问题? 说说ViewModel原理. LiveData 是什么? LiveData 为什么被设计出来,解决了什么问题? 说说LiveData原理. ViewModel 是什么,说说你所理解的ViewModel? 如果看过我上一篇文章的小伙伴应该都有所了解,ViewModel是M…
要看本系列其他文章,可访问此链接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…
在我们写程序的时候,经常会遇到各色各样的问题,在国内,小伙伴们经常去知乎.CSDN.博客园.思否.安卓巴士等地方提问并获得答案. 这些地方汇集了很多优秀的.爱分享的国内资源.小编比较自豪的一件事情就是:当初学习dubbo期间,因为一个数据关闭错误一直找不到正确的解决方式,就顺手把自己解决问题的步骤写下,并附上参考资料中的方法,算是把那类问题做了一个增强版的总结,没想过几个月后,有位粉丝专门找上来感谢我,帮他解决了疑惑. 技术人,就是那么容易得到满足.得到别人的一句谢谢,开心的像个傻瓜.前行路上,…
ViewModel ViewModel的引入 如果系统销毁或重新创建界面控制器,则存储在其中的任何临时性界面相关数据都会丢失.例如,应用的某个 Activity 中可能包含用户列表.因配置更改而重新创建 Activity 后,新 Activity 必须重新提取用户列表.对于简单的数据,Activity 可以使用 onSaveInstanceState() 方法从 onCreate() 中的捆绑包恢复其数据,但此方法仅适合可以序列化再反序列化的少量数据,而不适合数量可能较大的数据,如用户列表或位图…
使用X-UA-Compatible来设置IE浏览器兼容模式 文件兼容性用于定义让IE如何编译你的网页.此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">…
参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_schema_changes_c.html#concept_ds_rdc_lvr_gk 在Cassandra1.2及之后,大量的模式变化可以同时发生在一个集群中,而节点之间没有任何模式的分歧.例如,如果一个客户端设置一个列为integer而另一个客户端设置为text,一个或另一个动作会立马生效.哪一个动作会生效…
Patterns 模式 Ansible中的模式是指我们如何决定那些机器执行管理操作.这里意味着与那些主机通信,但是对于playbook,它是指哪些主机应用特定的配置或执行特定程序. 我们将重温一下Introduction To Ad-Hoc Commands部分如何使用命令行,命令格式如下: ansible <pattern_goes_here> -m <module_name> -a <arguments> 例如: ansible webservers -m serv…
1 原型链继承 #### ES6中通过原型继承多个引用类型的属性和方法,由于原型和实例的关系,即每个构造函数都有自己的原型对象,同时原型有一个属性指向构造函数,并且实例有一个内部的指针指向原型.如果存在某原型是另一个类型的实例时,以此类推.便形成了原型链. -实现原型链的基本代码模式: function SubType(){} SubType.prototype.getValue = function(){} 此时,函数SubType的原型上边定义了一个方法 getValue 在下一步进行实例化…
注意分离: 通过将CSS关闭来测试页面是否仍然可用,内容是否依然可读: 将JavaScript关闭来测试页面仍然可以执行正常功能:所有连接是否正常工作:所有的表单是否可以正常工作: 不使用内联处理器(onclick之类)和内联样式属性,因为这些不属于内容层: 使用语义上有意义的HTML元素: DOM脚本: DOM访问: //DOM访问的代价是昂贵的 ; 避免在循环中使用DOM访问: 在可能的情况下使用selector API;  /尽可能使用id,getElementById是最便捷的查找方法:…
第一次写这种东西, 有些生涩和蹩脚, 也是为了自己在表达或是总结方面有所提高, 同时为看过的东西留个痕迹, 以便日后查阅. 有错误或是不妥的地方, 还望各位指正, 谢谢! 第1章 简介 本章主要介绍了本书要讨论的内容, Javascript的一些基本概念, 面向对象, 原型, ECMASCript5, JSLine和console的相关内容. 不做过多阐述, 给出模式的定义 广义上: 模式是一个可以用来产生其他事物的模板或模型. 在软件开发中, 模式是指一个通用问题的解决方案. 书中主要讨论三种…
面向对象六大原则 在此之前,有一点需要大家知道,熟悉这些原则并不是说你写出的程序就一定灵活.清晰,只是为你优秀的代码之路铺上了一层栅栏,在这些原则的指导下,你才能避免陷入一些常见的代码泥沼,从而让你写出优秀的东西. 单一职责原则 单一职责原则的英文名称是 Single Responsibility Principle,简称是 SPR,简单地说就是一个类只做一件事,这个设计原则备受争议却又极其重要.只要你想和别人争执.怄气或者是吵架,这个原则是屡试不爽的.因为单一职责的划分界限并不是如马路上的行车…
Lifecycle Lifecycle组件包括LifecycleOwner.LifecleObserver,能方便监听Activity或者Fragment的生命周期. 步骤: 1.实现LifecycleObserver接口 实现DefaultLifecycleObserver接口,然后重写里面生命周期方法: 直接实现LifecycleObserver接口,然后通过注解的方式来接收生命周期的变化: 对于这两种形式,Lifecycle.java文档中是建议使用第一种方式,因为文档中说明了,随着Jav…
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…
前提:导入所有依赖,开启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…
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…
文档是企业重要的智力资产.在企业中,文档一般都以电子文档的形式存在,比如微软.doc格式,xls格式,ppt格式,pdf格式,纯文本.txt格式等:从内容上,可能是商务合同.会议记录.产品手册.客户资料.设计文档.推广文案.竞争对手资料.项目文档.心得等.这些文档,可能是过程性质的,也可能是公司正式发布的文档,可能处在编写阶段,也可能是已经归档不能再修改的. 其实SharePoint的文档管理功能已经很强,支持签入签出,支持加密,支持流程,支持版本,支持元数据,支持上百种企业级别的文档管理功能,…
Toad®for Oracle 版本 12.0.1 发行说明 30 July 2013 目录 欢迎使用 Toad for Oracle 版本更新 解决的问题和改进 已知问题 第三方已知问题 升级和兼容性 系统要求 全球化操作 入门指南 参阅详细信息 欢迎使用 Toad for Oracle Toad for Oracle 为各种技能和经验水平的数据库专业人员提供了一种直观有效的工作方法,并且全面改善工作流程.效率和生产力.有了 Toad for Oracle,您可以: 通过可视化展示,理解数据库…
官方给的实践指南,很有实际的指导意义,  特别是对一些小公司,小团队,给了很好的参考意义. 原文地址: 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.…
依赖 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…
这篇文章对目前 GUI 应用中的 MVC.MVP 和 MVVM 架构模式进行详细地介绍. MVC 在整个 GUI 编程领域,MVC 已经拥有将近 50 年的历史了.早在几十年前,Smalltalk-76 就对 MVC 架构模式进行了实现,在随后的几十年历史中,MVC 产生了很多的变种,例如:HMVC.MVA.MVP.MVVM 和其它将 MVC 运用于其它不同领域的模式. 早期的 MVC 而本文的内容就是从 MVC 开始的,作为架构模式中最出名并且应用最广泛的架构模式,MVC 并没有一个明确的定义…
导语 | 近日,云+社区技术沙龙“腾讯开源技术”圆满落幕.本次沙龙邀请了多位腾讯技术专家围绕腾讯开源与各位开发者进行探讨,深度揭秘了腾讯开源项目TencentOS tiny.TubeMQ.Kona JDK.TARS以及MedicalNet.本文是对张国成老师演讲的整理. 本文要点: Message Queue 的原理和特点: TubeMQ相关实现原理及使用介绍: TubeMQ后续的发展和探讨. 一.Message Queue 简介 对于Message Queue(以下简称MQ),Wiki百科上的…
01 36岁Android开发,为公司工作8年,昨天HR说公司不准备续约 前天晚上,有个读者给我留言,讲述了他自己比较气愤的一件事,感觉自己委屈又不值. 这位朋友不愿意透露姓名,就叫他H先生吧. H先生是典型的学霸,大学也是211的牌子,又是计算机专业. 研究生毕业以后就进入了现在的公司当了一名Android开发. 当时是有3家企业接收他的,他选择了当时效益不错,而且有发展前景的现在的公司. 进入公司以后,他就像所有的程序员一样开始了加班加点赶程序的日子. 02 辛苦付出8年,为公司解决无数个技…
插入insert 单条插入 > db.foo.insert({"bar":"baz"}) WriteResult({ }) 批量插入 > db.foo.insert([{},{},{}]) BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], , , , , , "upserted" : [ ] }) > db…
TweenMax 参考http://bbs.9ria.com/thread-214959-1-1.html TweenMax 可能是很多人都用的,包括我 但 是最近发现大量的运用就总会产生这样或那样的"怪事",有时用代码来做缓动有时又用TweenMax造成了代码的 混乱,而且除了单调的TweenMax.to()等几个函数外,貌似还有很多这样那样fun stuffs.对于动画ease的控制,自己除了一个Back就不知道其他了. 总之一片惨淡, 所以趁着这个机会好好总结一下: 一,主要代码…
说明:来看一下关系型数据库的update语句 UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某 其中where子句就类似查询文本,定位要更改的子表,set子句类似于修改器,更新哪些内容. 1.1文档替换 就是用一个新的文档完全替换匹配的文档.用于进行大规模模式数据的迁移. 例如: 如果要将friends和enemies两个字段迁移到relationships子文档中.可以进行如下操作 step1: var joe=db.users.findOne({"name"…
说明:本文档为前端JS规范 一.规范目的 为提高团队协作效率,便于前端后期优化维护,输出高质量的文档. 二.基本准则 符合web标准,结构表现行为分离,兼容性优良.页面性能方面,代码要求简洁明了有序, 尽可能的减小服务器负载,保证最快的解析速度. 项目的维护和二次开发可能是直接或间接的团队合作,所以创建易维护的代码是一个项目成功与否的关键,易维护的代码意味着具有如下特性: 阅读性好:如良好的注释和命名规范,有文档 具有一致性:看起来如同一个人编写 代码的松耦合,高度模块化:将页面内的元素视为一个…