前言Jetpack架构组件及“标准化开发模式”确立,意味着Android开发已步入成熟阶段,只有对MVVM确有深入理解,才能自然而然写出标准化、规范化代码。本次笔者会浅入浅出的介绍以下内容,由于它是一个我的学习总结记录,所以比较适合对MVVM不是很熟悉,但又想了解下全貌的读者:JetpackMVVMJetpackLifecycleJetpackLiveDataJetpackViewModelJetpackDataBindingJetpackMVVM在正文开始前,先回顾下MVP:MVP,Model-View-Presenter,职责分类如下:Model,数据模型层,用于获取和存储数据。View,
ViewModel做为架构组件的三元老之一,是实现MVVM的有力武器。ViewModel的设计目标ViewModel的基本功能就是管理UI的数据。其实,从职责上来说,这又是对Activity和Fragment的一次功能拆分。以前存储在它们内部的数据,需要它们自己处理创建,更新,存储,恢复的所有过程,同时它们还要处理UI的数据绑定,更新,动画等操作。职责的多元化就容易出现不好定位和调试的问题。另外,Activity和Fragment作为UI的承载者,很多时候需要共享数据和复用功能。而UI的差异让复用的粒度划分很难把控,容易写出扩展性差的代码。基于这些痛点,ViewModel被设计出来了。同时Vi
目录概述1.什么是状态2.什么是单向数据流3.理解Stateless和Stateful4.使用Compose实现一个计数器4.1实现计数器4.2增加组件复用性-----状态上提总结概述我们都知道了Compose使用了声明式的开发范式,在这样的范式中,UI的职责更加的单一,只会对数据状态的变化作出反应,如果数据状态没有发生变化,则UI就永远不会自行的改变。假如我们把Composable的执行看成是一个函数的运算的话,那么状态就是函数的参数,输出就是生成的布局。由于唯一的参数决定唯一的输出,所以只有当函数的参数发生了变化,生成的布局才会相应的跟着变化。本文会通过一个计时器的小例子分别介绍如何能够更
官网简介Jetpack是一个由多个库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种Android版本和设备中一致运行的代码,让开发者精力集中编写重要的代码。Jetpack是Google为解决Android开发碎片化,打造成熟健康生态圈提出的战略规划,是Google对Android未来提出的发展方向,同时它也是众多优秀Android组件的集合。JetPack的构成图Jetpack主要特性:1.加速开发组件可单独使用,也可以协同工作,当使用kotlin语言特性时,可以提高效率。2.消除样板代码AndroidJetpack可管理繁琐的Activity(如后台任务、导航和生命周期管理
关于JetpackCompose的学习本想只是简单的快速学习一下,结果万万没想到,竟然一下子折腾了好几个月。。。下面将之前记录的JetpackCompose相关的学习博文进行一个汇总链接整理,方便我以后自己查阅,也希望能帮到一些有正在学习Compose的道友。JetpackCompose中的基础组件JetpackCompose中的state核心思想JetpackCompose中的ModifierJetpackCompose中的动画JetpackCompose中的手势操作和事件处理JetpackCompose中的导航路由JetpackCompose中的AccompanistJetpackComp
【1】导入依赖implementation'androidx.databinding:databinding-runtime:4.2.2'【2】在app模块下的build.gradle文件添加内容android{...dataBinding{enabledtrue}}或者android{...buildFeatures{dataBindingtrue}}另外,如果在android闭包下没有指定java1.8版本的话,需要添加:compileOptions{sourceCompatibilityJavaVersion.VERSION_1_8targetCompatibilityJavaVersi
1、什么是JetpackGoogle2018年推出的一系列组件的统称。其目的是为了统一安卓开发规范,提高安卓开发效率,提高应用的质量。jetpack总共分为四个部分Architecture:架构组件UI:UI组件Behavior:行为组件Foundation:基础组件Jetpack官方地址:https://developer.android.google.cn/jetpack/2、架构组件DataBinding(数据绑定):使用声明性格式将布局中的界面组件绑定到应用中的数据源。Lifecycles(生命周期感知):构建生命周期感知型组件,这些组件可以根据Activity或Fragment的当前
本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索郭霖即可关注,每个工作日都有文章更新。终于下定决心要写这个系列了。前段时间刚在公众号上分享了一篇关于JetpackCompose动画的文章,看到了评论区有这样一条留言。不管这个问题是疑问还是反问,其实类似的观点我也着实看过不少。因此,在正式开始写这个系列的文章之前,我觉得有必要先写一篇序章,我们真的就来纯粹地聊一聊,到底为什么要学习JetpackCompose?事实上,JetpackCompose对于我来说是必写的一个系列,只是时间早晚的问题。想一想,之前大家还经常会吐槽Google怎么又又又出新技术了,直呼跟不上了,学不动了之类
文章目录一、Room#Migration迁移工具升级数据库二、多个数据库版本的迁移三、数据库异常处理-RoomDatabase.Builder#fallbackToDestructiveMigration()函数四、完整代码示例一、Room#Migration迁移工具升级数据库RoomMigration数据库迁移工具是AndroidJetpackArchitectureComponents(架构组件)的一部分,它是一个方便的数据库迁移工具,用于为Android中使用Room框架创建的数据库提供自动化迁移方案;RoomMigration数据库迁移工具用途如下:数据库修改:修改数据库表结构;迁移代
1.SharePreferencesSharedPreferences:一个轻量级的存储类,特别适合用于保存应用配置参数。(是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下)image.pngSharedPreferences使用:1.保存数据:保存数据一般分为以下步骤:使用Activity类的getSharedPreferences方法获得SharedPreferences对象;使用SharedPreferences接口的edit获得SharedPreferences.Editor对象;通过SharedPreferences.Editor接口的putX