安卓软件开发教程-新手学习遇到瓶颈,该怎么提高?(内附解决办法)
之前有人在朋友圈评论我说,现在学习Android 遇到了瓶颈,基本上一般的API,市面上大部分App UI 都能做出来,该怎么提高?然后我回复他了,我学习Android 也有一年左右,也是个菜鸟,也遇到这样的问题,所以就各种查资料,看看大神们都在研究什么技术,也跟着学习学习。当初在逛知乎看到了一些问题(PS:逛知乎还是很有好处的嘛!!!),看到很多回答就觉得很受启发,还有看别人的博客,也很受用,想要写一篇文章的想法,等了一两周才开始动手。
新手学习遇到瓶颈
我觉得新手做的更多是重复的工作,可能接触好的项目,前一两个月会觉得学到好的东西,但是随着公司的东西慢慢熟悉,也就变成日复一日的重复劳动,然后慢慢感觉也就学习遇到了瓶颈,而一些太难的东西又不太情愿去琢磨,比如读Android 源码,你使用Handler Loopeer 感觉很巧妙,可以仔细研究一下;还有就是很多第三方开源库你使用起来很方便,如果这个时候你仔细阅读源码,也一定能感受它的设计的巧妙。因此,我多方搜集,整理出来了以下几条,有一定经验接下来要做的事。
解决问题的能力
我觉得这个我没有能力回答,不过之前有幸听过一个演讲,@阿拉神农 邓凡平老师在北京GDG DevFest 的一个演讲,说过你进入一个项目组,不要惧怕问题和Bug,你把很多问题解决了,你的技术也会上升到一个层次。邓老师在文中也提到了怎么学,学到什么程度,以及学什么,还专门提到多线程,网络(HTTP,TCP/IP)编程,设计模式这些基础东西,就算Android 有一天不行了,这些东西也一样会被吸收借鉴的。
关于演讲的内容:《Android开发进阶之旅》
。
注:邓老师从事软件开发有十余年,之前是做底层开发,现在在做应用层的开发,他也是《深入理解Android》系列书籍的主要作者之一。
阅读和理解源码
这个问题我也没有多大能力去回答,也读过一些开源库的源码,像Retrofit,Volley,还有像Handler Loopeer 的机制,其他的虽然阅读过,但是没有理解太深,这也是我以后努力的方向。还有人问问什么要读源码,我想说,如果你写写XML 布局文件,会用用API,一个实习生两三个月就和你差不多了,你还有什么资历说你很有经验,知其然知其所以然说的就是这样的意思,阅读和理解源码让你更好使用API,解决问题的能力也大有提高,也有了造轮子的能力。当然了跳槽面试的时候也可以吹牛逼了。
下面的两篇文章是Kaede 的博客上两篇文章,他也有自己的知乎专栏——《中二病也要开发Android》。Kaede 在文中阐述了,为什么要阅读Android 源码,以及该怎么读,还有要读哪些,对于源码接触不太多的同学有个参考,也推荐一些大牛的博客,站在巨人的肩上,有了前人的参考,也会事倍功半的。
深入理解Java
Java语言相对来说比C++ 简单很多,但是对于经常写业务代码的人,对于如何写出优雅的java代码以及如何辨别垃圾代码,还有Java的内存模型/GC,并发机制,虚拟机执行流程肯定不甚了解,因此,这个阶段,我打算大致搞清楚Java语言本身,顺便从这个角度切入编程语言本身;主要如下:
但是,Java平台的技术栈远非这么一点,学无止境;走到这一步,我觉得对于Java语言已经算得上掌握了,于是主要目标转向编程语言本身。
深入Android
这一块有很多人分享过经验,其实无非那么几点,我就简单重申一下吧。
《Android 开发艺术探索》这本书确实不错,适合中级程序员。个人感觉《Android 内核剖析》挺不错的,虽然有点过时了也买不到书了。 《Android 源码设计模式》,在Android 的源码中都有什么使用哪些设计模式,也让你更深入去理解源码。
当你搞清楚了这些,基本上你写的什么代码在Android 上层是怎么运作的都了然于胸;FrameWork 层的任何问题也拦不住你的脚步了;不过这个阶段,仅仅是了解了Android 系统Framework 层的原理,对于怎么写代码安卓软件开发教程,对于语言本身,对于Android 系统底层的原理依然很迷惑,没事,已经看到了光了,一步一步来。
除了Android 源码值得读的,还有第三方的开源库也是值得一读的,有的开源库甚至比官方的更加好用,比如像我们常用的Retrofit,OkHttp,Picasso,Volley,EventBus,Dagger,我们基本上都能熟悉使用,Trinea 和一些大牛在Github 做的一个项目,专门分析了开源项目,我们可以参考着来看。
我觉得新手阅读源码的姿势还是有点弱,当然站在巨人的肩膀就会事半功倍安卓软件开发教程,所以看看大牛写的文章还是很~(≧▽≦)/~涨姿势的。
了解编译原理等CS基本知识
推荐一下R 大的书单吧:。
当然由于定位不一样,我肯定不会像他一样专门搞搞基语言虚拟机(主要是我没那个水平!),仅供参考;我自己目前看的几本书如下:《编程语言实现模式》《深入理解计算机系统》《SICP》《编译器设计》;然后由于在学Haskell,所以在追github上一个项目,sdiehl/write-you-a-haskell ;具体怎么做还是边走边瞧。
后面的我也不敢说太多,目前打算是希望深入了解Linux内核,以前看过《深度探索Linux 操作系统:系统构建和原理解析》;打算看《深入Linux内核》《Unix环境高级编程》;只要越过了浮躁期,其实目标还是很明确的;知道自己该学习什么,也知道大致该怎么做;感觉自己走在正确的路上,越来越接近那个目标,每天都充满希望。
参考
本文部分章节参考来自weishu在知乎上面的回答。
本篇文章能够完成,参考了weishu,邓凡平老师,kaedea,Trinea,当然也看了很多博客,在这里特别感谢他们,本人资历尚且有限,写过过程中难免会有疏漏,还请见谅。
【安卓同学】的公众号,更多分享...