http://www.nulj.cn

首页 所有文章 归档 留言 关于我

Artfactory、Jetpack和MVVM该如何完美结合?_郭霖

编辑:李靖2021年9月23日993次阅读阅读转载: 郭霖

或许你在技术交流群里也遇到过这样让人哭笑不得的提问:

每一个Android开发者,都希望可以搭建一个优秀的 Android 开发框架。它不仅需要满足不断增长的业务需求,还要保证框架自身的整洁与扩展性,这非常困难而且过程会很痛苦,但我们必须这么做,因为健壮的 Android 开发框架是一款优秀APP的基础。

APP架构设计

每个App由于项目特点和需求的不同,都会出现一套基于开发者所设计的架构模式,分层、组件化、模块化,每一种设计都是基于项目所在场景的,很难适合所有项目场景。

几种主流架构设计对比:

MVC

MVC 简单来说就是将整个应用分为模型(Model)、视图(View)和 控制器(Controller)三个部分;

Android 本身的设计还是符合 MVC 架构的,但是经常会出现一些意想不到的问题,如内存泄漏等,这就导致了 MVC 的变种 MVP 的出现。

优点:

结构清晰,职责划分清晰;降低耦合;有利于组件重用;

缺点:

Activity/Fragment中代码较多;代码结构比较复杂;

MVP

MVP 架构模式是 MVC 的一个变种,最大区别就是 View 层可以发起事件。

Presenter 层的出现帮助我们减轻了 Activity 的压力,结构上也较为清晰,但是 View 层将存在较多与 Presenter 沟通的代码,MVVM 架构就在这时候被提出来了。

优点:

结构清晰,职责划分清晰;模块间充分解耦;有利于组件的重用;

缺点:

会引入大量的接口,导致项目文件数量激增;增大代码结构复杂性;

MVVM

MVVM 架构模式可以说是Google “钦定”的 Android 开发未来的第一架构。

从Model-View-ViewModel 这个名字来看,它由三个部分组成,其中视图模型(ViewModel)其实就是 PM 模式中的展示模型。除了我们非常熟悉的 Model、View 和 ViewModel 这三个部分,在 MVVM 的实现中,还引入了隐式的一个 Binder 层,我们要完整的采用 MVVM 必须熟练的掌握 DataBinding 等基础组件。

优点:

结构清晰,职责划分清晰;模块间充分解耦;

在 MVP 的基础上,MVVM 把 View 和 ViewModel 也进行了解耦;

缺点:

Debug 困难,由于 View 和 ViewModel 解耦,导致 Debug 时难以一眼看出 View 的事件传递;代码复杂性增大;

MVx区别

在开始编程前,我们不应该低估一个应用程序的复杂性。

随着业务的不断发展,App 业务规模扩大,随之而来的是团队规模扩大,那就涉及到多人协作问题,每个移动端软件开发人员势必要熟悉如此之多代码,如果不按照一定的模块组件机制去划分,将很难进行多人协作开发。

各种问题也会接踵而至,混乱的数据存储、获取,灵活性不够高的代码,会成为我们项目中、后期最大的阻碍,任由其自由发展的后果就是,导致项目狼藉一片,我们将很难加入新的功能,只能对它进行重构甚至推翻重做。

搭建应用架构的方式多种多样,没有万能、一劳永逸的架构,它应该是不断迭代更新,适应业务的。

为了让大家搭建一个健壮的 Android 开发框架,深度理解模块化、层次化、控件化、组件化,将Jetpack和Mvvm应用到工作中,我邀请了国防科技大学研究生、全球首批Android开发者Allen老师为大家带来《从零开始手把手搭建APP框架》系列直播课程,让你在搭建app架构的同时,进行App启动速度的性能优化,快速成长为移动端大神!

如扫码受限,可搜索微信号:Xiangxue9502


Allen老师:

中国联通资深架构师;全球首批Android开发者;10余年项目开发经验,独立开发应用被 360收购。

专精领域:Android架构,性能优化等技术领域。

课程大纲

11.27 Mvvm项目Gradle优化和本地仓库搭建

1、APP架构应该怎样搭建?

2、MVx有哪些?区别是什么?

3、Android工程Gradle的使用规范和本地仓库搭建;

4、模块化、层次化工程搭建;

11.28 基于Jetpack的Mvvm高级架构逐步实现

1、初中级工程师是怎样实现架构?

2、架构师怎样实现控件化,怎样定义自定义的基类?

3、Mvvm Model的功能是什么?缓存有哪些级别,怎样提取Model的基类? 

4、Mvvm ViewModel怎样和Jetpack结合,OOM问题在MVVM中怎样避免?

11.29 App组件化和启动性能优化

1、Fragment和Activity的错误处理页面有完美方案吗?他们的基类又该怎样实现呢?

2、App的白屏问题怎么解决?

3、App启动速度性能优化;

报名福利:

今年面试越来越难搞,很多小伙伴都在秋招中不太理想,想准备在明年金三银四跳槽中摩拳擦掌准备大面好几场,我特地准备了《字节跳动总监知乎5716赞的Framework开发笔记》给大家!

Android Framework 的知识广泛的应用在各个领域,重要性不言而喻。像掉帧监控、函数插装、慢函数检测、ANR 监控、启动监控等,都需要对 Framework 有比较深入的了解,才能知道怎么去做监控,利用什么机制去监控,函数插桩插到哪里,反射调用该反射哪个类哪个方法哪个属性…

▲报名训练营即可领取

立即扫码添加兰兰老师报名

还有海量安卓工程师岗位内推机会!(头条、阿里等)

如遇扫码受限,可搜索微信号哈:Xiangxue9502

“所以,你到底能不能做个淘宝???”

推荐阅读:Jetpack新成员,一篇文章带你玩转Hilt和依赖注入Jetpack新成员,App Startup一篇就懂浅谈Kotlin的Checked Exception机制
感谢阅读,如果觉得本文对您有帮助,请给我点个,或者把本文的网址复制分享其它好友。
本文网址:http://www.nulj.cn/nulj.cn/k/2936.html复制
写博客不容易,服务器成本也很高,感谢谢支持。微信打赏红包

发表评论

李靖的博客

大家好,我是李靖,不是封神榜的托塔天王李靖。我只是一个普通的上班族,1991年出生于湖南邵阳市。我喜欢看书/看电影/摄影/打手游。感谢你访问我的博客,我在博客中会经常分享我喜欢的文章。创建这个博客记录生活,让我学会很多知识也认识了很多朋友。
关于我的更多资料>>

支持博主

写博客不容易,服务器成本也很高。您可以用微信给我发个小红包。疾风知劲草,板荡识诚臣。你的支持就是我的动力。谢谢!
垃圾信息处理邮箱tousu117@163.com icp备案号 粤ICP备10034762号 互联网安全管理备案 不良信息举报平台 Copyright 2021 www.nulj.cn All Rights Reserved