博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2020回顾Android 的发展历程-谈一下当下最合适的架构
阅读量:2356 次
发布时间:2019-05-10

本文共 2309 字,大约阅读时间需要 7 分钟。

作者:i校长

链接:https://www.jianshu.com/p/d90dbed80a38

上次我们讲到一个好的架构有哪些优点,当然好的架构肯定还有其他方面的优势,我只是表达了自己的一些观点,有问题欢迎反驳,我们一起讨论。下面我们来看看当前版本的Android架构,如何做到最合适,也不一定是最合适,但大方向肯定要正确。我们先看看架构的历程。

Android架构演进

MVC > MVP > MVVM

我们先回顾一下google为我们做了什么,一开始我们接触android,大家都在用MVC,甚至可以说没有架构,而且那个时候app是真的简单,但随着不断的迭代,问题越来越多,google也发现了这个问题,于是github开源了MVP架构的示例,教我们如何整合框架,如何在架构设计上保证业务的发展需求,再到现在主推的MVVM,其实不难发现一个共性,WEB端大家都知道吧,你看现在最火的React、Vue,不都是MVVM的架构吗(有人说不是,有人说是,这里不多解释,我们不应该纠结是不是,应该理解M-V 、 V-M 是数据绑定UI,无非是单向还是双向的,都属于一种理念吧,理解就行。)

原生 > React Native > Flutter

一个好的架构只是MVC到MVVM吗?我不这么认为,从一开始我们接触到原生的Android开发,到后来大火的React Native,我们16年还专门集成了React Native模块,但做了几个迭代后放弃了,我们发现为了适配Android、Ios 也花费了很多时间,倒不如用原生做的好用。目前最火的Flutter,也是Google主推的跨平台框架,而且我们现在就在C端项目中集成了,效果还不错,虽然也是有很多问题,但总体来看比React Native 要好,还有一点Google内部正在开发的另一个操作系统Fuchsia的UI layer采用的是Flutter,也就是说Flutter天然可以支持Android、IOS以及未来的Fuchsia。在大前端方向,对于跨平台开发中一直在不断迭代中寻找更好、更优的解决方案,目前来看Flutter还是更有优势

Java > Kotlin,Dart

来说说语言,你说语言属于架构吗?我也不知道,但这是我架构的时候考虑的一个方向,语言是我们组织架构最基础的单元,kotlin的普及,应该不仅仅是google认为语言不错,让我们广大开发者使用,其实这里面涉及了很多东西,我们知道最新的android引用的是open jdk,前几年的官司打个不停,付出了不少人力财力,这肯定不是我们还要考虑的,但有一点可以肯定,kotlin语言确实是个趋势,因为他有更合理的设计,更安全的性能表现,更加简洁的代码,当然你可以用java写android写到老,我也不认为你用kotlin写就一定比java写的好,看个人选择吧。再说说Dart,这个我就有点不理解,为啥Flutter一定要用Dart写,好像Google工程师这么回答:说Dart就在隔壁啊,好沟通。哈哈。

小总结

通过上面的闲扯,我们基本已经有了架构的雏形了吧

  • MVVM + 原生 + Kotlin 或

  • MVVM + 原生、Flutter + Kotlin、Dart 等等.. 自己组合吧,我目前选择第二种,相信很多人的项目都已经是这样了。那么接下来我们就要实现这样的架构,架子有了,就该塞东西了,这样就显得饱满一些。

如何实现一个基础MVVM

architecture-samples

https://github.com/android/architecture-samples

这里肯定想到Android Jetpack,2018年谷歌I/O 发布了一系列辅助android开发者的实用工具,只有你想不到,没有它做不到的,上面就是谷歌官方给的示例,学习起来很简单,但对于大多数人是不是更喜欢我们国内写的博客,这里我就不啰嗦了,我再实现一遍MVVM其实也跟他们没啥区别,我贴一个,你慢慢看。一个美团的作者,不错哦,请看他的文章。

项目:https://github.com/Kelin-Hong/MVVMLight

文章:https://tech.meituan.com/2016/11/11/android-mvvm.html

工作这么多年,经验告诉我,一切从简设计,不要一开始就搞那么复杂,因为我们不确定你现在做的东西会在什么时候直接被抛弃,当然你也要有个预估,看项目的大小决定,适可而止。谈对象都知道,不是越大越好,而是合适最好,哈哈,你肯定想污了,我不敢看。

如何集成Flutter

Add-Flutter-to-existing-apps

https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps

到目前为止,应该会有很多人的项目都在集成Flutter了,特别是大厂,他们早就跟进了,我这有一个咸鱼Flutter最佳实践,有需要的私聊我哦,我发给你。博客的话请看:https://www.yuque.com/xytech/flutter

结语

从Android的架构演进,不难看出未来的世界肯定是大前端的,所谓的大前端也许是大佬们一个概念,但从这几年好多大统一的技术出现,感觉未来不远,也许就是明天,在这奉劝各位读者,提升自己就在现在,JS、Dart、Java、Kotlin、Python等等吧,T型人才未来才是互联网的中流砥柱,不光要学好android,也要横行发展哦。

                        喜欢 就关注吧,欢迎投稿!

转载地址:http://cvbtb.baihongyu.com/

你可能感兴趣的文章
Linux学习资料网址
查看>>
Markdown学习模版
查看>>
TeXmacs 中文输入问题
查看>>
通过串口控制树莓派
查看>>
使用C语言开发操作系统(1)
查看>>
女生应该偷偷知道的事
查看>>
打造CSDN里最有个性的Blog版面(HTML+CSS)http://blog.csdn.net/DL88250/archive/2007/02/06/1503789.aspx
查看>>
女孩们 请不要让男生太累 http://www.leelay.com/read.php/55.htm
查看>>
经典的25句话 http://www.leelay.com/read.php/136.htm
查看>>
近代数学七大难题及其解释http://bbs.kaoyan.com/thread-1545672-1-1.html
查看>>
哈奇森效应和反重力研究
查看>>
谁能详细叙述一下哈奇森效应http://zhidao.baidu.com/question/8752263.html?fr=qrl3
查看>>
DEC 多国字符集 (MCS) -ASCII 码表
查看>>
ASCII码全接触http://www.elook.net.cn/handbook/this_content/ascii.htm
查看>>
解剖Google搜索原理 The Anatomy of a Large-Scale Hypertextual Web Search Engine
查看>>
lucene的中文分词器http://www.blogjava.net/dreamstone/archive/2007/06/22/125726.html
查看>>
ICTCLAS分词系统Java调用接口在Eclipse中的安装 http://blog.csdn.net/CloneIQ/archive/2006/07/20/945909.aspx
查看>>
在基于Struts构架的Java Web项目中加入ICTCLAS分词http://blog.csdn.net/CloneIQ/archive/2006/08/09/1043088.aspx
查看>>
QQ尾巴病毒的发送原理分析http://www.bitscn.com/hack/virus/200607/46309.html
查看>>
手把手教你把Vim改装成一个IDE编程环境(图文)http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx
查看>>