从读者的反馈来看,近期大部分安卓开发已跳出舒适圈,开始尝试认识和应用 Jetpack MVVM 到实际的项目开发中。

只可惜,关于 Jetpack MVVM,网上多是 东拼西凑、人云亦云、通篇贴代码 的文章,这不仅不能提供完整的视角来帮助读者,更是给还没入门 Jetpack 的读者 徒添困扰、起到 劝退 的作用。

好消息是,这一期,给大家带来了精心打磨的 Jetpack MVVM 最佳实践案例

让人爱不释手的交互设计!

连贯的用户体验

唯一可信源的统一分发

横竖屏布局的无缝切换

项目简介

本人拥有3 年的移动端架构践行和设计经验,领导团队重构的中大型项目多达十数个,对Jetpack MVVM 架构在确立规范化、标准化开发模式以 减少不可预期的错误 所作的努力,有着深入的理解。

在这个案例中,我将为你展示,Jetpack MVVM 是如何 蕴繁于简地将原本十分容易出错、一出错就会耽搁半天时间的开发工作,通过寥寥的几行代码轻而易举地完成。

划重点!

在这个项目中,

我为 横、竖屏 的情况 分别安排了两套 截然不同的布局,并且在生命周期、重建机制、状态管理、DataBinding、ViewModel、LiveData 、Navigation等知识点的帮助下,通过寥寥几行代码,轻松做到 在横竖屏两种布局间 无缝地切换,并且不产生任何 预期外的错误。

我在多个 Fragment 页面 分别安排了 播放状态 指示器(包括 播放暂停按钮状态、播放列表当前索引指示 等),并向你展示了如何以及为何通过 LiveData 配合 作为唯一可信源 的 ViewModel或单例,来实现 全应用范围内 可追溯事件 的统一分发。

我在 Fragment 和 Activity 之间分别安排了 跨页面通信,从而向你展示如何基于 迪米特原则(也称最少知道原则)、通过 UnPeekLiveData 和 应用级 SharedViewModel 来实现 生命周期安全的、事件源可追溯的 页面通信(事件回调)。

我们在 ui.page 、data.repositorybridge.request 等目录下,分别安排了 视图控制器、ViewModel 、DataRepository 等 内容,从而向你展示,单向依赖 的架构设计,是如何通过分层的 数据请求和响应,来 规避 内存泄漏 等问题。

本项目的代码一律采用Java来编写。并且,在上述目录所包含的类中,我们大都 提供了丰富的注释,来帮助你理解 骨架代码 为何要如此设计、如此设计能够 在软件工程的背景下 避免哪些不可预期的错误。

除了在蕴繁于简的代码中掌握 MVVM最佳实践,你还可以从这个开源项目中获得的内容包括:

  1. 整洁的代码风格和标准的资源命名规范。
  2. 对视图控制器知识点的深入理解和正确使用。
  3. AndroidX和Material Design 2的全面使用。
  4. ConstraintLayout 约束布局的最佳实践。
  5. 优秀的用户体验和交互设计。
  6. 绝不使用Dagger,绝不使用奇技淫巧、编写艰深晦涩的代码。
  7. One more thing.

项目源码【点击我】获取。

除此之外,我还给大家准备了一份Jetpack实战项目视频,免费分享给关注我的读者!‘

目录:

1.深度理解各个Jetpack组件库存在的意义
2.jetpack架构项目实战演示
3.使用传统模式完成功能及其问题
4.使用jetpack代码重构完成功能并解决问题
5.LiveData源码解析
6.ViewModel源码解析
7.项目分层详解
8.项目流程详解
9.项目的共享操作
10.LiveDate数据黏性
11.观察整个项目的状态
12.Rom数据库完成收藏模块

如果你是缺少学习的理论资料,而我正好薅到这本阿里巴巴内部Jetpack宝典,从入门到精通,教程通俗易懂,实例丰富,既有基础知识,也有进阶技能,能够帮助读者快速入门,是你学习Jetpack的葵花宝典。

目录:

1.Android Jetpack - Navigation
2.Android Jetpack - Data Binding
3.Android Jetpack - ViewModel & LiveData
4.Android Jetpack - Room
5.Android Jetpack - Paging
6.Android Jetpack - WorkManger
7.Android Jetpack架构组件之Lifecycle
8.Android Jetpack Compose
......

由于文章篇幅有限,仅展示一部分内容,此份笔记还包含 Android Jetpack架构组件--App Startup、Android Jetpack最新组件介绍、Android Jetpack项目实战(从0搭建Jetpack版的WanAndroid客户端)、项目实战等等。

朋友们如果有需要,可以【点击我】免费阅读下载。

Jetpack MVVM 实战项目,附带源码+视频,收藏!的更多相关文章

  1. Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)

    Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)    转 https://blog.csdn.net/lhl1124281072/article/details/800 ...

  2. MVVM大比拼之AngularJS源码精析

    MVVM大比拼之AngularJS源码精析 简介 AngularJS的学习资源已经非常非常多了,AngularJS基础请直接看官网文档.这里推荐几个深度学习的资料: AngularJS学习笔记 作者: ...

  3. Log4Net 日志配置[附带源码]

    前述 园子里有许多人对log4net这款开源的日志记录控件有很多介绍.在这里个人再做一次总结,希望对以后有所帮助,需要的时候可以直接使用,减少查阅资料的时间.利用log4net可以方便地将日志信息记录 ...

  4. 【轮子狂魔】抛弃IIS,打造个性的Web Server - WebAPI/Lua/MVC(附带源码)

    引言 此篇是<[轮子狂魔]抛弃IIS,向天借个HttpListener - 基础篇(附带源码)>的续篇,也可以说是提高篇,如果你对HttpListener不甚了解的话,建议先看下基础篇. ...

  5. SpringBoot2.x整合Prometheus+Grafana【附源码+视频】

    图文并茂,新手入门教程,建议收藏 SpringBoot2.x整合Prometheus+Grafana[附源码+视频] 附源码+视频 目录 工程简介 简介 Prometheus grafana Spri ...

  6. 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

    本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...

  7. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  8. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  9. Maven自定义绑定插件目标:创建项目的源码jar

    <build> <plugins> <!-- 自定义绑定,创建项目的源码jar --> <plugin> <groupId>org.apac ...

随机推荐

  1. MySQL数据库快速入门与应用实战(阶段一)

    MySQL数据库快速入门与应用实战(阶段一) 作者 刘畅 时间 2020-09-02 实验环境说明: 系统:centos7.5 主机名 ip 配置 slavenode3 172.16.1.123 4核 ...

  2. 6.12、通过kvm可视化管理虚拟机

    6.12.1.通过Xmanager - Passive管理kvm虚拟机(首先要安装xmanager): 1.安装虚拟化管理软件: [root@centos7 ~]# yum install -y vi ...

  3. yoyogo v1.7.4 发布,支持 grpc v1.3.8 & etcd 3.5.0

    YoyoGo (Go语言框架)一个简单.轻量.快速.基于依赖注入的微服务框架( web .grpc ),支持Nacos/Consoul/Etcd/Eureka/k8s /Apollo等 . https ...

  4. Vulkan移植GPUImage的安卓Demo展示

    演示Android apk下载 需要Android 8以上. 先看效果图,大约一百多种滤镜,有超过一半的滤镜有参数设置,其参数调整界面使用反射自动生成与绑定. 如下每种选择一些进行展示. 视觉效果 图 ...

  5. 关于HTML的常用标签

    目录 前言 html常用标签 排版标签 图像标签 链接标签 注释标签 预格式化文本pre标签&特殊字符 语义化标签 前言 本文主要是对html的常用标签一个总结归纳,对所学的内容做一个查漏补缺 ...

  6. python opencv处理图片

    1.图像读入:cv2.imread() 使用函数cv2.imread(filepath,flags) 读入图像.第二个参数是要告诉函数应该如何读取这幅图片. cv2.IMREAD_COLOR:默认参数 ...

  7. Java实验项目二——二维数组实现九九乘法表

    Program:打印乘法口诀表 (1)编写一个方法,参数(二维数组),完成将二维数组中的数据按照行列显示的工作. (2)编写一个测试方法,给出99乘法表,放入到二维数组中,调用(1)中的方法,显示乘法 ...

  8. Ionic命令笔记

    Ionic命令:ionic serve 开启服务调试ionic cordova prepare android 生成android原生项目 ionic cordova run browser 打包成混 ...

  9. Redis+Lua解决高并发场景抢购秒杀问题

    之前写了一篇PHP+Redis链表解决高并发下商品超卖问题,今天介绍一些如何使用PHP+Redis+Lua解决高并发下商品超卖问题. 为何要使用Lua脚本解决商品超卖的问题呢? Redis在2.6版本 ...

  10. 「AGC035C」 Skolem XOR Tree

    「AGC035C」 Skolem XOR Tree 感觉有那么一点点上道了? 首先对于一个 \(n\),若 \(n\equiv 3 \pmod 4\),我们很快能够构造出一个合法解如 \(n,n-1, ...