从读者的反馈来看,近期大部分安卓开发已跳出舒适圈,开始尝试认识和应用 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. 39、升级linux的内核

    39.1.什么是linux系统内核: 操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件.一个计算机 系统是一个硬件和软件的共生体,它们互相依赖,不可分割.计算机的硬件,含有外 ...

  2. 2018-10-14普及模拟赛」Hash 键值 (hash)

    今天,带大家看一看一道思维题... Hash 键值 (hash) 题目描述 Marser沉迷hash无法自拔,然而他发现自己记不住hash键值了-- Marser使用的hash函数是一个单纯的取模运算 ...

  3. SpringCloud:路由ZUUL的配置详解

    以下是两种配置文件的配置方式,可以根据需要选取对自己项目有利的配置. 自定义访问路径(path) 配置application.yml文件 #provider-user:是你的微服务模块的名称,及spr ...

  4. Docker:Linux离线安装docker-17.03.2-ce,配置开机自启

    1. 准备docker离线包 docker官方离线包下载地址 下载需要安装的docker版本,我此次下载的是:docker-17.03.2-ce.tgz 2. 准备docker.service 系统配 ...

  5. XCTF GAME

    首先这题有两种解法,一种是使用ida查看伪代码直接写exp跑出flag,另外一种是调试,因为最近在学调试,刚好用于实战上了. 一.查壳 二.32位文件拖入od动态调试 先找到game的主要函数,插件中 ...

  6. TestComplete 64位和32位之间的区别

    在64位系统上,有两种版本的TestComplete:32位和64位.本主题描述了TestComplete x64及其32位版本之间的区别.关于TestComplete x64启动TestComple ...

  7. 交换机卡在CPU task进程处理方法

    故障现象: 笔记本通过console线连接H3C交换机的console口,无法登陆,敲任何东西都无效.因为没有备份,不敢重启.显示以下报错: <test-sw> wrong input! ...

  8. 配置Mac 终端高亮

    mac下所有vim的配色方案的样式. 下面讲解如何设置这些好看的配色 首先:在终端输入 vim ~/.bash_profile 查看是否有上面提到的某些配色,所有配色均是以.vim结束的,果有的话,再 ...

  9. Python单元测试框架unittest之生成测试报告(HTMLTestRunner)

    前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...

  10. python3安装pp过程

    并行计算的目的是将所有的核心都运行起来以提高代码的执行速度,在python中由于存在全局解释器锁(GIL)如果使用默认的python多线程进行并行计算可能会发现代码的执行速度并不会加快,甚至会比使用但 ...