Jetpack MVVM 实战项目,附带源码+视频,收藏!

从读者的反馈来看,近期大部分安卓开发已跳出舒适圈,开始尝试认识和应用 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.repository、bridge.request等目录下,分别安排了 视图控制器、ViewModel 、DataRepository 等 内容,从而向你展示,单向依赖 的架构设计,是如何通过分层的 数据请求和响应,来 规避 内存泄漏 等问题。
本项目的代码一律采用Java来编写。并且,在上述目录所包含的类中,我们大都 提供了丰富的注释,来帮助你理解 骨架代码 为何要如此设计、如此设计能够 在软件工程的背景下 避免哪些不可预期的错误。
除了在蕴繁于简的代码中掌握 MVVM最佳实践,你还可以从这个开源项目中获得的内容包括:
- 整洁的代码风格和标准的资源命名规范。
- 对视图控制器知识点的深入理解和正确使用。
- AndroidX和Material Design 2的全面使用。
- ConstraintLayout 约束布局的最佳实践。
- 优秀的用户体验和交互设计。
- 绝不使用Dagger,绝不使用奇技淫巧、编写艰深晦涩的代码。
- 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 实战项目,附带源码+视频,收藏!的更多相关文章
- Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)
Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码) 转 https://blog.csdn.net/lhl1124281072/article/details/800 ...
- MVVM大比拼之AngularJS源码精析
MVVM大比拼之AngularJS源码精析 简介 AngularJS的学习资源已经非常非常多了,AngularJS基础请直接看官网文档.这里推荐几个深度学习的资料: AngularJS学习笔记 作者: ...
- Log4Net 日志配置[附带源码]
前述 园子里有许多人对log4net这款开源的日志记录控件有很多介绍.在这里个人再做一次总结,希望对以后有所帮助,需要的时候可以直接使用,减少查阅资料的时间.利用log4net可以方便地将日志信息记录 ...
- 【轮子狂魔】抛弃IIS,打造个性的Web Server - WebAPI/Lua/MVC(附带源码)
引言 此篇是<[轮子狂魔]抛弃IIS,向天借个HttpListener - 基础篇(附带源码)>的续篇,也可以说是提高篇,如果你对HttpListener不甚了解的话,建议先看下基础篇. ...
- SpringBoot2.x整合Prometheus+Grafana【附源码+视频】
图文并茂,新手入门教程,建议收藏 SpringBoot2.x整合Prometheus+Grafana[附源码+视频] 附源码+视频 目录 工程简介 简介 Prometheus grafana Spri ...
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- Maven自定义绑定插件目标:创建项目的源码jar
<build> <plugins> <!-- 自定义绑定,创建项目的源码jar --> <plugin> <groupId>org.apac ...
随机推荐
- FastApi持续更新
FastAPI 框架,高性能,易于学习,高效编码,生产可用 官方文档: https://fastapi.tiangolo.com FastAPI 是一个用于构建 API 的现代.快速(高性能)的 ...
- 互联网巨头们的 SRE 运维实践「GitHub 热点速览 v.21.27」
作者:HelloGitHub-小鱼干 本周大热点无疑是前几天 GitHub 发布的 Copilot,帮你补全代码,给你的注释提出建议,预测你即将使用的代码组件-如此神奇的 AI 技术,恰巧本周微软也开 ...
- Java 创建PDF文件包的2种方法
1. 概述 PDF文件包可方便在仅打开一个窗口的情况下阅读多个文档,通过将多个PDF文档或其他非PDF文档封装在一起,打开文件包后可以随意切换查看文件包中的文档,在需要编辑更改的情况,也可以打开文本包 ...
- 10、基本数据类型(set)
10.1.集合: 1.集合元素用大括号括起来,用逗号分割每个元素 2.集合的特点: (1)集合元素的数据类型只能是不可变数据类型,"列表"."字典"." ...
- Sqlite3:Sqlite3命令行Linux操作
1.查看sqlite版本 [istester@ietester.com idoxu]$ sqlite3 -version 2.进入sqlite后台操作 指定一个完整文件的路径名,打开或者创建数据库(文 ...
- ExtJs4学习(五)最基本的Ext类
Ext类是ExtJs中最常见.最基础的一个类,它是一个全局对象,封装了所有类.单例和 Sencha 库所提供的实用方法. 大多数用户界面组件在一个较低的层次嵌套在命名空间中, 但是提供的许多常见的实用 ...
- Netty实现对Websocket的支持
一.WebSocket的简介及优势 WebSocket 是一种网络通信协议.RFC6455 定义了它的通信标准.WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的 ...
- 使用Less/Sass生成Bootstrap格栅样式系统
熟悉Bootstrap的同学应该了解其中的格栅系统,用来排版非常方便.他将页面分为12等分,并且适用不同的尺寸屏幕.超小xs(小于768px),小屏sm(大于等于768px),中屏md(大于等于992 ...
- 『心善渊』Selenium3.0基础 — 25、unittest单元测试框架
目录 1.unittest基本简介 2.unittest基本概念 (1)unittest核心的四个概念 (2)如何创建一个测试类 (3)test fixture常用的四个方法 (4)unittest编 ...
- Linux | 管首命令符号
简介 管道的意思,在我们日常生活中,意思就是运输一个东西,到下一个地方,所以说 管道命令符 的使用也是差不多的,也是运送一段数据到下一个地方,格式:命令A | 命令B | 命令C .... 所以说,管 ...