跟你掰扯掰扯
写这一篇文章的目的在于,让你认清目前的技术本质,还有应该用哪些技术来写自己的项目,我用我自己的体验来分析分析,也不能说我分析的就对,毕竟我们不是同一个人,拥有着不同的思考方式,所以,分析要是不到位,还望列位海涵。在微信搜索我们的公众号:AppCode来关注我们,我在微信里等你。
1.目前国内所用到的技术
一般对于小一点的企业,不会去自己开发框架,而是都是用的别人开发好的,直接拿来用,或者拿来自己再进行封装下然后再用,大家都知道,想要开发一套框架不是说他有多难,而是你根本没有时间去干这些事的,想想一下,一个屁大点公司把时间都浪费到这些没有用的事情上,你觉得他们还能活得下去吗,技术对于做技术的人来讲,可能尤为重要,但是对于公司来讲,他就是个屁,钱才是第一位,所以我们使用别人的代码或者框架,再或者实现什么效果时,直接用别人写好的就行了,除非你很闲,有一大堆的时间,我想在国内恐怕没有,毕竟大家加班是为了活着,老板活着就是为了加班已是常态。
其实世界上的很多事的道理都是相通的,好比一个公司,他到底是要自己搞自己的产品呢,还是复制别人的产品呢,众所周知,在国内,没有几个人是自己创造自己的产品,原因就是没有那么多时间浪费在这些没有用的事情上,你要想创造,不是不可以,只要你有足够的钱来支撑,要不然你就乖乖的复制别人的产品就行了,于是,在中国,复制粘贴成了最流行的模式,赚钱肯定要用最快的方式,而不是为了完成什么破梦想,那是有钱人干的活,技术也是一样,能用现成的就用现成的,不要整那么多废话。
在Android界,目前来看,访问网络都用Retrofit2,这个框架是大神Jake Wharton的经典之作,软件的框架用MVP的比较多,软件的解耦当然是dagger2了,期间又出来一个RxJava,被称之为响应式编程,靠,有那么神奇么,还有一个就是注解,其实dagger2也用的是注解,那么就是butterknife了,最后一个就是操作数据库了,目前GreenDao比较牛逼。加载图片的就不说了。今天重点说的就是这些框架。
如果你对上面所说的比较懵逼,或者说是没有听过,亦或者说你都快用烂了,不要紧,你来听我给你掰扯掰扯。
2.框架分析
在你用这些技术之前,你得问一问,你为什么要用这些技术,他有什么好处?他真的很棒吗?必须得质疑,不能说别人说好,他就好,得有自己的见解。
说到框架呢,好像每个人的理解都不太一样,我暂且说下我的理解,我觉得他没有什么可神气的,说到底,最终只是一种模式而已,就拿软甲的架构来讲,也就是框架,现在都流行MVP,MVVM,以前流行的是MVC,这个大家应该有所耳闻吧,那么他究竟有什么好处?
其实,说句实话,有些小公司的软件,根本不讲什么框架,你给我实现就行了,别跟我提什么框架,其实这正常,不能说一款软件如果用不到先进的技术,就觉得很low,有这种想法的人,你的世界观有待提高,你还差的太远,好好活着吧。你想下,他们的产品要是比较简单,你觉得有比较用这些吗,要是用了我才觉得傻,首先框架是没有一个标准的,你去搜一下,看有没有MVP的框架来让你使用。肯定没有啊。
所以使用框架,他也要看你的项目有没有这个必要,那么他什么时候才有必要呢?回答这个问题之前,你得了解下什么是框架,或者什么才是MVC,MVP,MVVM,就拿MVP来说,他是个什么东西,也有可能你看了许多的文章,还是不明白什么才是MVP,还是不会用。当我用了这个之后呢,感觉他也就那么回事,没有什么神奇的,就是一种模式而已。
什么才是MVP?
为了搞明白这个东西,我下了点功夫,就是写一个MVP的软件,其实就是把自己的软件变成MVP模式的,核心其实只有一个,那就是把你以前写的代码(写在一个类里面的)全部分开,就这样。今天不讲他的具体实现,只是稍微提一下,后面我可能会全部公布出来,并且讲解。
3.dagger2分析
这个东西只是用来解耦的,用了一段时间,感觉还是蛮不错的,为什么这么说呢,其实这个东西在软件的架构比较复杂的时候才能体现出他的优点来,比如说,你的软件架构要是采用的是MVP的话,可以说,他是必用的。
使用场景呢
好比一个activity,你要引进一个类,这个类里面你要做许多事情,但是呢,这类里面有许多参数要通过构造方法来传递,那么这个时候你在activity 里 new他的时候,你需要传入进去他所需要的所有参数,这个时候感觉没有什么可麻烦的,好像用不到dagger2出马吧,那么他的用处何在呢?
如果说以后你这个类的参数要变了,需要加入一个参数,好没有问题,你可能还需要去activity改下一,要不然还报错,这个好像看起来也不麻烦啊,那么如果说,你的这个类有几十个activity都用到它了呢?难道你要一个一个去改他吗,相信我,你会疯掉的,这个时候dagger2就能用到了,你随便怎么改你的构造方法,我都能给你传进去,这才是他的优点。
4.Retrofit2,RxJava分析
以前访问网用的都是volley,okhttp,现在又出来一个Retrofit,你想干什么?难道你很神奇吗,要知道,Retrofit厉害的地方就是内嵌了RxJava,当你用他来访问网络的时候,你就会忘记他究竟是Retrofit还是RxJava,这个是他厉害的地方
曾被人问到,我们为什么要用Rxjava,难道说他切换线程很方便我们就要用它吗?大家都知道,Android切换主线程的方法也很简单,一句ruonuithread()就能切换到主线程,同样都很简单,为什么要用它?这个问题还是比较难回答的,当你真正的用了他之后才能发现他的好处,他不需要你在访问网络完成之后调用runOnuiThread(),他只需要你在访问之前指定一下后面的事情需要在哪个线程来做就行了,之后的事都交给RxJava来处理了
5.butterknife
其实这个注解框架我觉得最有用的就是控件的绑定了,一句话就是让你不用再写findviewbyid()了,使用这个框架得使用一个插件,要不然也没有什么卵用,二者结合才叫完美,的确省了许多时间
6.总结
以上所提到到的,在我看来,需要结合使用,感觉他们就是一起生的,缺一个都感觉没有快感,最后我还是建议去了解或者使用这些技术,虽然说你的项目可能不适合,但是你总得以后出去找工作吧,人家问你这个,你总不能说你没有用过吧,那人家可能认为你对技术没有兴趣了,直接pass掉你怎么办?还是乖乖的去补习补习吧,这篇文章不是一气呵成,写的感觉有点乱,还有什么意见,还望能提出来,我们一起进步!
AppCode和梦想,同行。在微信搜索我们的公众号:AppCode来关注我们,我在微信里等你。
本文为头条号作者发布,不代表今日头条立场。