【干货推荐】Android开发该学习哪些东西?

开篇:

本人也是众多Android开发道路上行走的一员,听了很多大神的知乎live,本身也看了很多书,也和很多前辈交流过,因此在这里分享一下Android开发应该学习的书籍以及知识,固然,也包括一些方法,但愿对更多想进入这个行业的人有所帮助。
众所周知,如今移动开发早就不是最热门的程序员职业了,若是你没一点真功夫,仅仅靠两三个月的集训已经很难在这个行业中占有一席之地了。所以,想拥有真正的“真本事”是要花至关长时间的,个人这篇学习计划主要面向的人群是勇于花时间,切能坚持下来的同窗,好比说:想从事Android开发的在校大学生,想进阶的在职开发人员,以及由于我的缘由想从其它方向转向Android开发的程序员。程序员

入门阶段:快速上手,增长自信

怎样作可让初学者以为编程是容易学的,是有趣的?那天然就是获得一些能快速看到结果的反馈,本身写的程序能马上运转起来并实现一些效果,是很是鼓舞人心的,所以这个阶段的第一目的是经过学习能真正动手写两个程序,并能获得快速反馈,所以推荐一些相对简单的书籍。面试

1.Java初级入门:

推荐书籍:《Head First Java》,《Java从入门到精通》
《Head First Java》不用多说,业界公认的Java入门佳做,若是你的编程底子很是薄,能够经过这本书快速学习Java。而对于这本《Java从入门到精通》,也许不少人嗤之以鼻,以为是只教表面,不深挖原理的浅薄书籍,不必看,可是这本书的好处在于,当你彻底没接触过编程,没接触过计算机知识的时候,这本书是能够带你快速上道的,它不只仅只教如何使用Java语言,它连如何搭建开发环境这种对于出入门的人来讲很是头痛的事都有详细教程,所以,它对于刚刚入门的人来讲,是很是友好的,若是,你没有任何编程经验,但想从Java入门编程,这本书是很是好的。理论上来讲,这两本书选一本阅读便可。算法

2.Android初级入门:

推荐书籍:《第一行代码》
若是要开始这一阶段,请务必把Java初级阶段入门完成后再尝试。那怎样算是完成呢?起码用书中的知识本身写过Demo,而且测试成功,例如,最基本的Java知识,包括:继承,接口,字符串,内部类,匿名类,集合,简单的多线程,Socket网络通信等等都有过亲自的实践,第一阶段就算是完成了,你说反射,范型,枚举,多线程,注解等知识你没办法理解?没有关系,这些都是第二阶段攻克的主要目标之一。
至于第一行代码这本书,已经无需我废话,这在中国基本已经成了Android入门的标准教材,书中涵盖了Android开发知识的方方面面,例如如何搭建Android开发环境,Android四大组件的使用,Android网络通讯的基础,如何使用开源库,如何使用Git,如何进行本地存储等等。只要跟着这本书,把书中的每个Demo都本身手动实现一遍,并在学习完本书后,本身试着综合全部已学的知识开发一个能本身玩的小app,第一个大阶段——入门,就算完全结束了。
进阶:持续攀登技术之峰
若是你已经完成了第一阶段,而且已经小有自信来到了这里,那我要说,进阶阶段可能会让你扫兴,由于进阶阶段的学习量多是入门阶段的数倍,甚至上10倍,可是,既然已经走到这里来了,天然不能放弃。数据库

3.Java进阶,颠覆初学的认识

推荐书籍:《Java编程思想》,《Effective Java》
若是你已经读完了Java的入门书籍,也许会以为:“Java不就那么回事吗,用起来也挺简单啊,别跟我讲什么理论,我只要会用就好了!”但实际上,这个阶段也许会颠覆你以前对Java的大部分认知,咱们将从Java的高级特性以及底层原理来给咱们的Java知识树添枝加叶。
《Java编程思想》这本书近乎等于Java的权威教材,它详细讲解了Java的大部分细节,翻开目录,也许你会以为许多知识你都学过,可是请相信我,这本书值得一字一句的从头读到尾,读完将让你的Java内功功力大进,上升几个级别。固然,读完这本书是考验人毅力的一大挑战,由于这本书的确有些晦涩难懂,常常看一遍看不明白,须要多看几遍,而且这本书近乎800页的篇幅(实际上这本书的页数更多,只不过最后一张图形用户界面和Android开发关系不大,能够不看)实在是至关挑战读者的耐力。
《Effective Java》是Java使用者必看的书籍(不管你是哪一个方向),它以几十条实战经验总结做为索引,让读者从各处细节上掌握Java的使用技巧,从而编写出高效可用的Java代码,当把这些经验了然于胸时,带着这些经验写代码,将会节省你大量的时间和代码量来获取到足够多的编程经验。编程

 
image
4.Android开发进阶,以及设计模式的学习

推荐书籍:《Android开发艺术探索》,《Android源码设计模式解析与实战》
学习完《第一行代码》后,你可能会使用Android SDK中提供的许多类库来开发Android应用了,可是,只会使用是远远不够的,咱们必须掌握它们的运行机制和原理,以及咱们还应该学习自定义一些相似与系统提供的组件的工具(例如自定义View),学习这些知识,以上两本书再好不过了。它们对于这部分知识的讲解能够说是相辅相成的,这两本书一样是须要花大力气去阅读的,当这两本书被你完全吃透之后,1到3年经验的Android面试中,你基本已经能够拿下所有和Android有关的问题了。
若是你已经吃透了《Java编程思想》想必你已经和23种设计模式的其中几种见过面了,但也许还不是特别有感受,这时候就须要系统的学习了,《Android源码设计模式解析与实战》不只讲了Android源码,更精讲了各类设计模式,学完这本书能够说是一箭双雕,又能学习源码,又能系统的学习设计模式。

设计模式

5.实战环节

当你第3阶段完成之后,实际上就能够将这第5阶段和第4阶段并行执行了,这部分的知识绝大部分是书籍中所没有的,所以须要结合网上的博客文章和本身的大量动手实践来学习。首先,你已经在《第一行代码》中见过几种开源库了,如今,为了高效开发Android应用,咱们应该学习如下几类主流Android开源库的用法和原理,以下所示:性能优化

1.网络请求(Retrofit2)
2.图片加载(Glide/Fresco)
3.事件总线(EventBus/Otto)
4.异步操做(RxJava2)
5.依赖注入(ButterKnife/Dagger2)网络

括号中列出的是该类开源库中的表明做,有些种类我列出了两个,可是初学的时候只须要挑一个学习就能够了。固然,开源库的种类远不如这些,还有例如数据库操做,图片选择器,大图查看器等许多种类,可是这些库用到的频率并不及以上五种,以上五种开源库几乎能够说是在任何app中都要使用到的,学会它们不管是对你开发应用的效率仍是应付公司面试都颇为有用。
学习开源库的方法主要是先在网上找到一篇靠谱的文章简单读读,若是你英文好的话也能够直接去它们的项目主页去读英文文档;而后把它们的简单示例写个demo或者直接用在你正在开发的我的项目中,用上去之后再根据代码,仔细研读解析的文章或文档,而后修改这些代码,尝试些高级用法。等你闭着眼睛都能在脑中默念出这些库的使用流程的时候,就能够再找一些深刻分析的文章或者亲自去看它们的源码来学习它们的原理;学习原理是很是重要的,特别是在大公司的面试中,考察你是否理解你使用的库的原理也是至关重要的一个环节。到这里Android开发相关的基础理论知识就已经大体学习完了,这一节既然叫实战环节,那么你大量的编码量是少不了的,做为一个初涉编程的学习者,天天都保证必定的代码量或技术书籍的阅读量是少不了的,只有锲而不舍的大量练习,解决实际开发中的大量问题,技术才能真正的快速提升。数据结构

6.计算机基础知识补缺

开头已经说过,Android开发已经不是随便一个外行靠几个月的突击就能进入的低门槛行业了,市场上真正缺乏的是更专业的开发者,或者说是中高级工程师。做为一个非计算机专业的非科班生来讲,制约人发展的每每就是计算机基础知识,基础是个很奇妙的东西,不少人以为基础枯燥难学又感受不知道该怎么用,因而就放弃了基础的学习,但实际上基础这东西就像练体能,你在踢足球的时候射门铲球,头球倒钩,看起来当然很帅,可是在一场90分钟的球赛里,若是没有体能,会在比赛结束前就先累趴下,而计算机基础就相似于体能的做用,它供给你一个更专业的视角来看待编程和写代码,让你在不知不觉中写出高效的程序。
若是你一个还未毕业的大学生,那你无需作更多的计划,只须要把学校的专业课每一科都学好就足够了,若是你能在大学期间参加一些这些方面的比赛,例如ACM,不管对你的编程能力仍是简历都大有益处。
可是若是你已经踏入工做岗位,那确定是没时间把大学全部的专业课都学一遍且学的很深了,那能够参照我如下的计划,抓住基础中的重点来学习。
在我看来,和Android开发关系最密切的三门基础课:计算机网络,数据结构与算法,操做系统,下面会为每一个种类推荐相关学习书籍。
网络:《图解HTTP》,《图解TCP/IP》
这两本书都很薄,讲的网络知识也不会特别深,所以学习起来是很是快的,其它一些讲解网络的书籍,例如《HTTP权威指南》很是厚,也很晦涩难懂,虽然把HTTP讲的很是透彻,可是阅读起来耗费的时间太长,也很是费精力,所以在职的初级程序员就不推荐这样的书了。而这两本书几乎涵盖了Android开发的所用到的大部分网络知识,例如HTTPS,HTTP,TCP/IP的原理,以及一些基础网络知识例如七层协议等等,应付面试中网络部分的问题也是足够的了。
数据结构与算法:《算法4th》,《剑指offer》
《算法》是一本数据结构与算法的入门书,而且是用Java语言做为示例,所以若是你没有任何算法方面的经验,这本书是再适合不过了,即容易入门,又由于熟悉相关语言而不会感到陌生。
而《剑指向Offer》则是面试前准备的必备书籍,在大公司的面试中,无数算法题都出自本书,若是你没有跳槽的意愿,本书能够提高你的思惟并为你将来的跳槽早作准备,若是你即将找新工做,那本书更是必备的武功秘籍。
我目前也处在这个阶段,刚刚准备开始阅读这两本算法书籍。
操做系统:
因为这个阶段本身还没达到,因此还不知道有哪些比较合适的书籍。听群里的朋友说《30天构建操做系统》是一本不错的书,但我本身尚未去了解过,这一部分等我学到这部分的时候再去详细了解和补充。
高级:拓展知识面和大量实战多线程

 
image
7.知识拓展

推荐书籍:《深刻理解Java虚拟机》,《数据结构与算法—Java语言描述》,Android/Linux底层书籍
在大公司的面试中,不管校招仍是社招,都免不了问两道到三道Java虚拟机的题,例如Java内存模型,gc算法等等,所以《深刻理解Java虚拟机》这本书主要就是为了学习上述问题而存在的,固然,不只仅是应付面试,读完了这本书,也算是完全理解了Java底层的运做机制。
在第六阶段学完算法的同窗也许会发现,《算法4th》并无包含动态规划等算法知识,而《数据结构与算法—Java语言描述》正是补足这类知识点的好书,固然,这本书也不是必需要看的,若是你对本身的算法功底有更高要求,想深刻学习,或者之后干脆想向这方面转行,而且在本身学有余力的状况下就能够向这方面多下功夫,这本书看完后,若是你还不知足,能够尝试着挑战一下传说中的无字天书——《算法导论》。
做为一个基于Linux内核的操做系统,Android的许多运行机制都和Linux有关,若是你想更深刻了解Android底层的内容,例如Native层的运行机制,Linux内核的原理等等,就能够选择一些Android和Linux底层的书籍看看,至于具体是哪些书,我尚未了解过,若是之后我向这方面深刻扩展(固然也可能不会),我再回来补充。
除了以上这些推荐的书籍,咱们还有另一些知识值得关注,例如Kotlin。Kotlin今年正式被Google正名,成为在Android上开发应用的首选语言,固然,市场上的应用从Java向Kotlin全面转型是须要至关长的时间的,所以Kotlin的学习顺序被我放在了稍微靠后的位置,可是,若是你已经完成了上述的全部阶段,不知道接下来该学习什么的时候,你就应该马上开始学习Kotlin了。
除了新语言之外。一个好的开发者和其它开发者的一个很重要的区别就在于代码是否低耦合,高复用,这就涉及到了架构模式,架构模式在Android中最经常使用也是最流行的就是MVP,所以学习MVP也是一件颇为重要的事情。
这里虽然列在了下面,可是我认为Kotlin和MVP的学习顺序应该在深刻学习算法和Android/Linux底层以前,毕竟深刻的算法知识和过于底层的系统知识和应用开发实际上已经相距甚远了,虽然学习它们能够提高思想,可是在某些方面来讲,这些方向的具体知识已经和Android开发无关了,所以这两块是选学内容。
以上我列出的书籍,除了《Head First Java》我都是亲自购买并阅读过的(第六阶段及之后的书尚未读完),但在这里我还想推荐一下不少网友都推荐的好书,它们我虽然没有看过,可是都口碑不俗,在这里我把它们列出来。
《Java核心技术卷:卷1》,《Java核心技术卷:卷2》
这两本也是Java方面的经典书籍,其中卷1是能够做为入门书使用的,而卷2则是高级知识的进阶书籍。除了《Effective Java》不能被这两本书替代之外,若是你读了这两本书,我推荐的其它基本Java书籍就不是必读的了。
《Android群英传》,《Android群英传——神兵利器》
这两本书是国内Android大神徐宜生所著,第一本能够看作和《Android开发艺术探索》具备一样做用的书,可是内容上比《艺术探索》略微简单,且并不能彻底代替《艺术探索》,所以这本书能够做为互补书籍买来看看。而至于第二本《神兵利器》则是一本不可替代的书籍,你若是想找一本学习开发工具的书籍,这本书绝对合你的胃口,毕竟在Android开发的学习上,gradle,Android Studio,Git等工具的使用也是不容忽略的一大块。

结尾

技术历来都不仅是学习书本,书只是指明了学习的前进之路,可是想要真正有所进步须要把书中的内容用于大量实战,我做为一个小白也在持续学习的道路上奋力奔跑,但愿和各位一块儿锲而不舍,最终拿到令咱们本身心满意足的Offer,开发出能真正改变数万人生活的好应用除开业务需求和环境限制,我我的是比较推崇低成本拓展的。万事开头难,“三过门而不入”的坚持并非每一个人都有,而能把现阶段所掌握的去衍生去其余的能力,是比较稳定的技术增值。“贪多嚼不烂”,先有深度,再有宽度,望共勉!若是你依然在编程的世界里迷茫,不知道本身的将来规划,能够加入高级程序员群:里面能够与大神一块儿交流并走出迷茫。小白可进群免费领取学习资料,看看前辈们是如何在编程的世界里傲然前行。1.LiveDataBus2.Google官方架构组件3.Jetpack架构4.饿了么通讯技术5.OPenGL6.音视频7.人工智能8.Python9.性能优化10.Flutter等这些资料加群639986248领取

相关文章
相关标签/搜索