精华内容
下载资源
问答
  • Android学习路线指南

    万次阅读 多人点赞 2015-11-01 23:34:56
    前言 看到一篇文章中提到“最近几年国内的初级Android程序员已经很多了,但是中高级的Android技术人才仍然稀缺“,...这是一个问题,我不好回答,但是我想写一篇文章来描述下Android学习路线,期望可以帮助更多的...

    前言

    看到一篇文章中提到“最近几年国内的初级Android程序员已经很多了,但是中高级的Android技术人才仍然稀缺“,这的确不假,从我在百度所进行的一些面试来看,找一个适合的高级Android工程师的确不容易,一般需要进行大量的面试才能挑选出一个比较满意的。为什么中高级Android程序员不多呢?这是一个问题,我不好回答,但是我想写一篇文章来描述下Android的学习路线,期望可以帮助更多的Android程序员提升自己。由于我也是从一个菜鸟过来的,所以我会结合我的个人经历以及我对Android学习过程的认识来写这篇文章,这会让这篇文章更加真实,而并非纸上谈兵。

    我的工作经历

    前面说到,我也是从一个Android菜鸟过来的。其实这句话放在任何人的身上都是适用的,即大家都是一步步过来的,因此作为初学者也不必因为技术差而郁闷,同理,高手也不要看不起一些所谓的菜鸟,因为这不公平,技术只有在同等的工作年限上才具有一定的可比性,也许你眼中的菜鸟只是个工作半年的新手,而你已经工作5年,可想而知,这根本不具有可比性,搞不好别人5年后可以达到比你更高的技术高度。

    我有若干个技术QQ群,群里(481798332)的小伙伴对我的工作经历比较感兴趣,刚好在这里我就做下介绍。我是硕士研究生毕业,我已经工作3年零3个月了,职位上从最开始的腾讯初级工程师变成了现在的百度Android资深工程师。最开始我并不是做Android的,先是做了半年的C++,接着做了3个月的Web前端,然后公司内部转岗做Android到至今,纯Android工作年限的话其实是2.5年。但是我认为我的Android工作经验(注:工作年限不等同于工作经验)不止2.5年,我投入大量的业余时间在Android开发上,并且我习惯去思考问题、总结问题并将其融会贯通,因此我的Android技术在短时间内有了很大的提升。

    在Android学习过程中,初学者踩过的坑我也都踩过,我也深深地知道大家在学习过程中最棘手的问题是什么。举个例子,在3年前,我想在SlidingMenu中放入一个ListView,发现二者总是不能很好地一起工作,这肯定是由于滑动冲突的问题,我也知道,但是不知道怎么解决。我就去学校图书馆翻遍了所有的Android书籍,无果。大家肯定都知道原因,为什么我无法从书中查找到问题的答案,因为入门书不讲滑动冲突,所谓的高级编程书也不讲。还有一个问题,我曾经以为view.post(runnable)可以让runnable的run方法在线程中执行,所以我就在run方法里面去做耗时的操作,现在想想我当时是多菜啊,因此我曾经也是菜鸟。

    直到若干年后的某一天,我终于琢磨透了滑动冲突的事,然后我就把解决问题的思想写在了CSDN博客上,但是好像看得人并不多,很多人并不能体会我的用心,后来我博客的访问量越来越大,这才慢慢地得到了一些人的关注。后来有一天我有了写书的契机,我想到了我最开始学习Android时所踩过的坑,想到滑动冲突对我的困扰,为了更好地传播我的技术经验,为了让更多的人少踩一些坑,为了让更多地人成为Android高级工程师,我毅然决定将Android开发中最重要的、最疑难的、最容易困扰大家的、成为高级工程师所必备的知识点和盘托出,这就是《Android开发艺术探索》存在的原因以及意义。书的反响怎么样呢?从目前读者的评价来看,内容基本无差评,我收到了很多读者的肯定以及感谢,这说明很多人能够理解我的用心。

    说了那么多,言归正传,下面说下Android学习路线的话题,本文打算从4个阶段来对Android的学习过程做一个全面的分析,分别为Android初级、中级、高级以及资深工程师,具体请看下面的分析。同理,本篇学习路线仍然只针对Android应用开发,不针对Rom开发和逆向工程等。这里虚拟一位“小明”的角色,在这里小明就是Android初学者的代表。

    初级工程师

    小明之前完全没接触过Android开发,是个应届生,他的待遇是13k,然后小明以校招的身份进入了百度,然后小明需要怎么学习才能成为初级工程师呢?这个时候,小明对编程基础、数据结构、C语言都有一定基础,Java语法什么的也都掌握的比较好,Android才有java语言,无奈的是小明并不会搞Android。

    小明首先需要购买一本Android入门的书籍,为了更快地学习Android,小明业余时间也都用来一边看书一边照着书中的例子敲代码,结果2周时间小明就把这本书学了一遍。看完这本书后,小明对Android的历史、结构、代码规范等都有了一个大概的了解,并且,小明已经可以写出一些简单的Activity了。这个时候在小明眼里,Android开发很简单很好玩,通过在xml中摆放一些按钮文本框什么的就可以做一些界面了。

    小明开始跟着他的技术导师做需求,一些简单的小需求小明自然是不在话下了。突然有一天来了一个需求,该需求要求小明在Activity中为一个button加一个动画效果,小明慌了:“完全没接触过,书上也没有讲,怎么办呢?”小明冷静了下,打开了百度搜索,输入“Android 动画”,打开前几个链接,小明恍然大悟,照着网上的例子把需求给实现了。后来导师告诉他:“学好Android,官方文档是必须看的,既全面又权威”。然后小明如获至宝,花了一年时间把上面的guide和training都看了一遍,并且他还动手抄了几个小例子。

    有一天,小明又需要做一个动画相关的需求,这可难不倒小明,它熟练地打开了www.baidu.com,输入“Android 动画”,突然他楞了一下:”总不能每次写动画都要百度一下吧!“,于是他在CSDN开了一个博客,把动画相关的知识点都写上去,为的是后面再写动画相关的代码就不用百度去搜了,事实如何呢?后面再写动画相关的代码,小明的确不用再去百度搜了,因为通过写一篇动画博客,他把动画相关的细节都已经记住了,这样他就可以不用再去参考任何文档了,后来小明还学会了把一些琐碎的不方便放在博客上的东西写到了印象笔记上面,什么时候忘了10秒钟以内都可以快速找回来,而不是花10分钟去再次搜索一遍。

    这里总结一下,Android入门的时候,需要有一本入门书,好好学习书中的内容,同时花一年时间把Android官方文档中的training和guide看一遍,同时通过写博客和记笔记的方式来做总结,建议让自己的每篇博客都有价值些。通过一年时间的学习,相信每个人都可以达到中级工程师的水平。

    技术要求:
    - 基本知识点
    比如四大组件如何使用、如何创建Service、如何进行布局、简单的自定义View、动画等常见技术
    - 书籍推荐
    《第一行代码 Android》、《疯狂Android》

    中级工程师

    小明经过一年的努力学习终于成为Android中级工程师了,月薪变成了17k。到了中级工程师,已经可以在公司里干很多体力活了,但是一些很重要的任务小明还不能一个人承担起来,这个时候小明需要学习的内容就很多了,如下所示:
    - AIDL:熟悉AIDL,理解其工作原理,懂transact和onTransact的区别;
    - Binder:从Java层大概理解Binder的工作原理,懂Parcel对象的使用;
    - 多进程:熟练掌握多进程的运行机制,懂Messenger、Socket等;
    - 事件分发:弹性滑动、滑动冲突等;
    - 玩转View:View的绘制原理、各种自定义View;
    - 动画系列:熟悉View动画和属性动画的不同点,懂属性动画的工作原理;
    - 懂性能优化、熟悉mat等工具
    - 懂点常见的设计模式

    学习方法

    阅读进阶书籍,阅读Android源码,阅读官方文档并尝试自己写相关的技术文章,需要有一定技术深度和自我思考。在这个阶段的学习过程中,有2个点是比较困扰大家的,一个是阅读源码,另一个是自定义View以及滑动冲突。

    如何阅读源码呢?这是个头疼的问题,但是源码必须要读。阅读源码的时候不要深入代码细节不可自拔,要关注代码的流程并尽量挖掘出对应用层开发有用的结论。另外仔细阅读源码中对一个类或者方法的注释,在看不懂源码时,源码中的注释可以帮你更好地了解源码中的工作原理,这个过程虽然艰苦,但是别无他法。

    如何玩转自定义View呢?我的建议是不要通过学习自定义view而学习自定义view。为什么这么说呢?因为自定义view的种类太多了,各式各样的绚丽的自定义效果,如何学的玩呢!我们要透过现象看本质,更多地去关注自定义view所需的知识点,这里做如下总结:
    - 搞懂view的滑动原理
    - 搞懂如何实现弹性滑动
    - 搞懂view的滑动冲突
    - 搞懂view的measure、layout和draw
    - 然后再学习几个已有的自定义view的例子
    - 最后就可以搞定自定义view了,所谓万变不离其宗

    大概再需要1-2年时间,即可达到高级工程师的技术水平。我个人认为通过《Android开发艺术探索》和《Android群英传》可以缩短这个过程为0.5-1年。注意,达到高级工程师的技术水平不代表就可以立刻成为高级工程师(受机遇、是否跳槽的影响),但是技术达到了,成为高级工程师只是很简单的事。

    技术要求:
    - 稍微深入的知识点
    AIDL、Messenger、Binder、多进程、动画、滑动冲突、自定义View、消息队列等
    - 书籍推荐
    《Android开发艺术探索》、《Android群英传》

    高级工程师

    小明成为了梦寐以求的高级工程师,月薪达到了20k,还拿到了一丢丢股票。这个时候小明的Android水平已经不错了,但是小明的目标是资深工程师,小明听说资深工程师月薪可以达到30k+。

    为了成为Android资深工程师,需要学习的东西就更多了,并且有些并不是那么具体了,如下所示:
    - 继续加深理解”稍微深入的知识点“中所定义的内容
    - 了解系统核心机制:
    1. 了解SystemServer的启动过程
    2. 了解主线程的消息循环模型
    3. 了解AMS和PMS的工作原理
    4. 能够回答问题”一个应用存在多少个Window?“
    5. 了解四大组件的大概工作流程
    6. …
    - 基本知识点的细节
    1. Activity的启动模式以及异常情况下不同Activity的表现
    2. Service的onBind和onReBind的关联
    3. onServiceDisconnected(ComponentName className)和binderDied()的区别
    4. AsyncTask在不同版本上的表现细节
    5. 线程池的细节和参数配置
    6. …
    - 熟悉设计模式,有架构意识

    学习方法

    这个时候已经没有太具体的学习方法了,无非就是看书、看源码和做项目,平时多种总结,尽量将知识融会贯通从而形成一种体系化的感觉。同时这个阶段对架构是有一定要求的,架构是抽象的,但是设计模式是具体的,所以一定要加强下设计模式的学习。关于设计模式的学习,最近一本新书推荐给大家《Android 源码设计模式解析与实战》,既可以学习设计模式,又可能体会到Android源码中的设计思想,我最近也在阅读此书。

    技术要求:
    - 稍微深入的知识点
    - 系统核心机制
    - 基本知识点的细节
    - 设计模式和架构
    - 书籍推荐
    《Android开发艺术探索》、《Android 源码设计模式解析与实战》、《Android内核剖析》

    资深工程师

    这个阶段的程序员也许并没有太具体的学习路线了。

    交流方式

    • QQ交流群:635778578
    • 欢迎关注我的公众号,会持续更新Android干货
      cover
    • 欢迎加入我的知识星球,一起学习交流
      cover
    展开全文
  • android 学习

    千次阅读 2013-05-21 17:48:21
    Android学习规划和学习资料 最近经常被问起如何更深入学习Android,在这里分享一些学习经验。 一、应用层: 应用层的书没有特别好的,内容都大同小异。推荐下面的学习资料: 1. Android developer网站...
    Android学习规划和学习资料 
    最近经常被问起如何更深入学习Android,在这里分享一些学习经验。
    一、应用层:
    应用层的书没有特别好的,内容都大同小异。推荐下面的学习资料:
    1.     Android developer网站http://developer.android.com
    Android developer网站提供了熟悉Android系统最权威的资料,这里包含了Android所有概念的详细解释。
    2.     Android SDK示例程序
    AndroidSDK示例程序,位于sdk/samples目录下,提供了大量的案例程序(demo)。是熟悉应用程序和学习Android API的最佳入门材料。
    3.     《精通Android》
    这本书是一个印度人和一个美国人合著的,算是介绍应用层相对好点的材料,缺点是翻译一般,而且过于偏重于理论,实践的内容比较少
    4.     一本能迅速上手的书
    对于初学者,有一本迅速上手的书也是很有必要的。国内出版物通常侧重于实践,方便上手。这方面没有特别好的选择,通常人民邮电出版社图灵、机械工业出版社华章、电子工业出版社博文视点出版的原创书籍质量相对好些,可以根据自己的特点任选一本。最好选择2012年以后出版的图书,这样才可能包含比较新的概念,比如Fragment等。
    5.     分析Android源码内置应用程序
    Android内置应用程序是比较进阶的学习资料。Launcher、Contacts、Phone、Camera、Gallery不但提供了大量的编程技巧,还对理解系统功能十分有益。
    6.     分析Android开源项目
    可以从Android开源项目借鉴很多思想和方法。分析开源项目对第三方APP的开发十分有益。

    二、框架层
    框架层相对稳定,国内原创书籍质量也比较高。推荐下面的学习资料:
    1.     《Android系统源代码情景分析》和老罗的Android之旅博客
    作者:罗升阳。基于Android 2.3。老罗的特点是功底深厚,分析深入,对框架层核心模块的理解都很清晰透彻。需要读者有较高的起点,对C和C++部分的分析更为详细,对深入理解框架层非常有用。这本书对Binder驱动、智能指针、Ashmem、键盘消息处理机制、Service、Log系统的分析非常好。建议学习框架层必备。
    2.     《Android的设计与实现:卷1》
    作者:杨云君。基于Android4.1。这本书的特点是思路清晰,分析严谨细致,基本没留下什么盲点,对解决实际问题非常有用。对Java部分的分析更为详细。这本书对PackageManager、应用程序安装过程、ActivityManager、消息处理、进程管理、应用程序启动过程、系统启动过程的分析非常好。建议学习框架层必备。
    3.     《深入理解Android:卷1,2》
    作者:邓凡平。卷1基于Android2.2 ,卷2基于Android 4.0。这本书的特点是分析流畅,内容丰富,卷1侧重于框架层C和C++部分,卷2侧重于框架层Java部分,分析比较简略,对迅速了解框架层很有用。这本书对Binder框架、PowerManager、ContentProvider、常见类、Surface的分析非常好。建议学习框架层必备。

    三、内核驱动层
    1. 《Linux内核设计与实现》
    Linux开发四大名著之一,简称LKD。是迅速理解Linux整体框架的最佳选择。
    2. 《深入理解Linux内核》
    Linux开发四大名著之一,简称ULK。理解Linux内核的最佳选择。
    3.《Linux设备驱动程序》
    Linux开发四大名著之一,简称LDD。理解Linux驱动的最佳选择。
    4.《深入理解Linux内核架构》
    Linux开发四大名著之一,简称PLKA。理解Linux架构的最佳选择。
    5. 优秀的国产图书
    Linux内核源代码情景分析 (作者:毛德操,胡希明):国内分析Linux内核最深入的一本书,基于linux2.4,很多内容仍然值得借鉴。
    Linux设备驱动开发详解(作者:宋宝华):适合驱动入门的一本书,可以配合LDD一起看。
    嵌入式Linux应用开发完全手册 (作者:韦东山):适合入门的一本书,非常易懂
    ARM体系结构与编程(作者:杜春雷):适合了解ARM体系结构的一本书。
    展开全文
  • Android学习路线:如何成长为高级工程师

    万次阅读 多人点赞 2015-01-03 00:08:49
    点击给我投票前言之所以写这篇文章,是因为最近博客和我的开发群( 215680213 )中,不少小伙伴都让我讲讲android学习路线,所以我决定写一篇博客,来说明这个问题。既然有不少小伙伴来咨询这个问题,说明大家都...

    博主参加了2014 CSDN博客之星评选,帮我投一票吧。

    点击给我投票


    前言

    之所以写这篇文章,是因为最近博客和我的开发群( 215680213 )中,不少小伙伴都让我讲讲android学习路线,所以我决定写一篇博客,来说明这个问题。既然有不少小伙伴来咨询这个问题,说明大家都还是想快速地提高技术,毕竟技术的提高是职业发展中不可或缺的一步,技术好了,才能得到认可,才能升职加薪。一般来说,快速提高技术是不太容易的,但是通过正确的方法加上辛勤的汗水是可以缩短这个过程的。或许有人会问,你凭什么来写这个学习路线?你能写好这个技术路线吗?这个还真不好回答,不过我会按我的个人理解去写。这里先说下我的个人情况,我的个人介绍都在博客上面写着,希望能够给大家一些信心。下面将对技术路线一一展开,这里假设你还是个android菜鸟,即android初级工程师。


    一  明确自我定位

    现在你是初级工程师,但是你想当个高级工程师,所以,你就要给自己定个目标,即:我是要成为高级工程师的男人。有了这个定位,并且努力朝着这个目标去努力,然后内心深处就会有一个感觉,这个感觉就会成为你的B格,也就是说,虽然我现在是小菜,但是我不是一般的小菜,从而内心有一种自豪感,而这种自豪感会给你提供正能量。这一条是虚的,但是是有用的。


    二 学习路线

    首先找本android入门的书来看,这个好办,市面上大部分书都是入门的书,要把基本的东西搞懂,在学习的工程中要顺带写点demo,需要注意的是,demo要自己写,哪怕照着书上的抄,也不能直接把书中的demo运行一下。这个是有很大的区别的,代码感觉必须要通过敲代码来培养,抄一遍代码和运行一遍demo效果是截然不同的,这点一定要注意。入门的书看完后,基本就可以上手做一些开发了,比如公司的一些项目啥的。到此,我们已经成为初级工程师了,这个时间一般1-3个月即可。


    下面说下如何要成为中级工程师:

    中级工程师这个阶段很重要,一般来说需要1年左右的开发经验就能达到。首先,要找家靠谱的公司去做android,什么是靠谱的公司,就是在里面能学到东西,可以先不考虑待遇什么的,毕竟技术有了后面待遇也就自然有了。平时在公司要认真做项目,积极主动,一切以学知识为目标,不要图轻松少做项目。同时还要学习公司内部高级工程师、架构师们写的代码,加以理解变为自己的东西。这些都是工作中的经验,除了工作,还需要在业余时间勤奋 学习才可以。业余时间是指非工作时间的其他时间,而且这个时间利用的越多,你的成长之路历程就会越短,你就能越快地提高技术。大家不要小看业余时间,甚至好多情况下,只有工作时间是远远不够的,必须在业余时间也学习才行。那么业余时间如何学习呢?给大家如下几个建议:

    1. 写一个app,比如高仿系列,或者自己做一个app发布也行


    2. 建立一个博客,csdn或者个人博客都行

    这一条在我的眼里,是必须的,因为学习讲究总结、融会贯通,而博客刚好可以给我们一个写总结的地方。时不时把自己的知识汇总下写一篇博客出来,这对自己是一个提高,对别人也是一个帮助。这个怎么说呢,当你写博客,你就会发现一个知识你自己会了和写出来这是不一样的,能写出来才是真正地懂了。另外,当你的博客写好了,会有好多人看,这对你也是一个赞赏和激励,让你觉得你的辛勤劳动更有价值,这种利人利己的事,是一定要做的。刚开始写点基础的,慢慢就要写点难一点的,这样才能逐步提高。除了写博客,平时也要在内心中多总结、所思考才行,比如可以想想,android中所有的IPC方式有哪些等。写博客和做开源,对于提高个人知名度很有作用,而人一旦有了知名度,很多好事就都来了。这里可以阅读我之前写的一篇文章:树立个人品牌:让名企hr们主动来找你


    3. 建立或者参加开源,比如github

    开源的好处就不同提了,github上各色各样的开源都有,平时大家都是拿来用,但是自己写一个开源给全世界的人用,不是一个很美好的事情吗?建议大家参加开源,因为开源看起来档次比较高。我就有自己的开源,大家可以参看一下:https://github.com/singwhatiwanna


    4.研究android中一些高级的概念、源码等

    这个是很重要的,除了量变外,还需要质变。作为一个中级工程师,必须在核心技术上也有所提高,比如aidl、remoteviews、android内部的运行机制等


    经过上面几个过程,大概一年时间,android中级工程师就ok了,下面说说如何成为高级工程师:

    成为高级工程师就没有太具体了,就是把中级工程师的那几个建议,每个都做的很好,这个阶段往往需要1-2年或者更多。高级工程师的要求是:熟练掌握android api,理解android的内部运行机制,对view、activity等一些常用的android内部运行机制熟练掌握,对常见的android知识点都有涉猎,并且还能够解决一些比较偏门的问题(需要基于android的内部机制),对android的性能调优和适配有认识,代码风格较好并且具有一定的设计模式,在工作上除了技术还要有业务的理解,能够指导初中级工程师,在工作中能够独挡一面。同时在解决问题的能力上达到一个全新的档次,即能够用恰当的手段去解决无法google出来的问题的答案。这个解决问题的能力的档次,这个有点抽象,但是的确很重要,它决定了一个人的档次,具体的需要大家慢慢体会,当技术达到一个档次后,你就可以轻松解决一些疑难杂症。


    关于整个周期,从初级到高级大概要2-3年,或者更久。这么说,业余时间利用的越充分,这个周期就会越短,你的个人价值就会越高。虽然说起来简单,但是努力的过程是很艰辛的,但是只要你坚持去努力,很快你的生活就会不一样,相信这一点,谁都知道要努力才能有所收获,但为什么还是好多人没收获呢,原因是努力是不容易的,是要花时间的,是比看电影玩游戏要痛苦很多的。不怕别人比我们聪明,就怕比我们聪明的人还比我们努力,好了,大家加油了,花的时间到了,高级工程师自然就有了。最后,再强调下努力的重要性,在一个公司里,周围人的水平都和我们差不多,要深知脱颖而出的困难程度,从那么多人中脱颖而出是很难的,因此,一定要努力,一定要逼着自己去学习,这样才有可能脱颖而出,请大家一定要有这个意识。

    展开全文
  • Android学习指南

    千次阅读 2019-08-14 22:16:39
    下面,我将带着上述几个问题,详细讲解自身学习Android的方法和Android学习路径。最后,还会结合前面内容,给出综合的具体执行学习Android的建议。 1、学什么 面向Android初、中级开发者,对于要学习的Android理论...

    核心分析内容

    对于怎么学习Android,主要解决的是3个问题:学什么怎么学 & 怎么用

    具体如下:
    在这里插入图片描述
    下面,我将带着上述几个问题,详细讲解自身学习Android的方法和Android学习路径。最后,还会结合前面内容,给出综合的具体执行学习Android的建议。

    1、学什么

    面向Android初、中级开发者,对于要学习的Android理论知识,我认为主要包括:

    • Android基础 & 常用
    • Android进阶
    • 与时俱进、热门技术
    • 编程语言
    • 计算机基础

    具体介绍如下:

    1.1、Android基础 & 常用

    针对Android基础&常用知识,按照优先级最主要的知识点主要包括:四大组件布局使用多线程 & 动画

    具体介绍如下:

    类型 简介 具体内容
    四大组件 Android最基础、最常用的四个组件 • 活动(Activity)
    • 广播(Broadcast)
    • 内容提供者(ContentProvider)
    • 服务(Service)
    布局使用 常用UI布局组件 • 框架布局(FrameLayout)
    • 线性布局(LinearLayout)
    • 绝对布局(AbsoluteLayout)
    • 相对布局(RelativeLayout)
    • 表格布局(TableLayout)
    • 约束布局(ConstraintLayout)
    多线程 多线程操作、异步通信 • Thread、Runnable
    • Handler
    • AsyncTask
    • IntentService
    • HandlerThread
    动画 实现UI中的动画效果 • 补间动画
    • 属性动画
    • 帧动画
    • 差值器 & 估值器

    1.2、Android进阶

    针对Android进阶知识,按照优先级最主要的知识点主要包括:自定义View性能优化

    具体介绍如下:

    类型 简介 具体内容
    自定义View 自定义试图组件 & 动画 • 自定义View流程(measure、layout、draw)
    • 时间分发机制
    • 自定义动画 & 组件
    性能优化 性能优化的目的是为了让应用程序App更快、更稳定 & 更省电 • 内存优化
    • 内存泄漏
    • 绘制优化
    • 布局优化

    1.3、与时俱进、热门技术

    除了基础日常使用的Android知识,我们还需时刻关注行业动态,与时俱进的学习新技术,如近些年来较为热门的Android新兴技术包括:Flutter热修复插件化 等;

    同时,了解 & 学习常用的开源库也十分重要,常用的开源库主要包括 图片加载网络请求异步处理 的开源库。

    具体类型如下:

    类型 简介 具体内容
    图片加载 加载显示图片 • glide
    • fresco
    • picasso
    • Android-Universal-Image-Loader
    网络请求 与服务器快速实现网络请求 • Retrofit
    • okhttp
    • volley
    异步处理 快速实现异步通信、响应式编程 • RxJava
    • RxAndroid
    • RxBinding
    • EventBus

    1.4、编程语言:Java与Java虚拟机

    Android是基于Java的,所以学习Java和Java虚拟机(JVM)十分重要。

    学习Java不需要类似后端那么深入,我认为作为Android开发者,学习的内容包括:语言特性基础使用集合类机制

    具体介绍如下:

    类型 简介 具体内容
    语言特性 Java特有的语法特性 • 面向对象的3个特征与含义
    • 多态的实现原理
    • 基本数据类型、相关操作和封装类
    • 4种引用:强、软、弱、虚 & 应用场景
    基础使用 Java常见的使用类/方法 • 基本数据类型、相关操作和封装类
    • Object类、String类、抽象类(Abstract)
    • Static关键字
    • 接口(Interface)
    集合类 Java中与集合相关的类 & 使用 • Collection类、Arrays类
    • List、Set、Queue、Stack、Map的特点与用法
    • Vector、ArrayList、LinkedList的存储特性 & 区别
    • Map相关:HashMap、LinkedHashMap、TreeMap、HashTable、ConcurrentHashMap
    机制 Java特定机制的使用 • 多线程:Thread与Runnable、ThreadLocal、线程池ThreadPool
    • 线程同步:sychronized、同步锁(sychronized)
    • 反射
    • JNI
    • IO与NIO
    • 泛型

    对于Java虚拟机(JVM),属于底层 & 原理性的内容,具体介绍 & 学习的内容包括:
    在这里插入图片描述

    1.5、计算机基础

    除了学习Android特定技术外,对于程序员来说,最基本的计算机基础素养也十分重要的,主要包括 数据结构算法计算机网络

    具体介绍如下:

    类型 简介 具体内容
    数据结构 相互之间存在一种或多种关系的数据元素的集合 • 线性表&特殊线性表(栈和队列)
    • 树、二叉树
    • 串、字符串
    • 图
    • 查找
    • 排序
    算法 解决特定问题的求解步骤 对应每种数据结构的多种常见算法
    计算机网络 网络通信相关 • 计算机网络体系结构(5层 & 7层)
    • TCP / IP协议、UDP协议
    • HTTP协议
    • Socket

    1.6、总结

    至此,关于入门Andriod需学习的内容讲解完毕,总结如下:

    在这里插入图片描述

    2、怎么学

    对于怎么学习Android知识,此处分为3个子问题:

    • 学习路径:如何循序渐进、阶段性的学习Android的理论知识?
    • 获取途径:有哪些高效的方式获取Android理论知识?
    • 学习方式:用什么方式记录?怎么样去记录?

    下面将具体介绍:

    2.1、学习路径:如何循序渐进、阶段性的学习Android的理论知识?

    • 既然已经知道要学习哪些内容了,下面,该解决的是:学习路径,即什么阶段该学习什么内容
    • 对于Android知识学习阶段,我认为是和Android开发水平相结合的,只要掌握了哪部分知识,就代表你处于Android开发的哪个阶段。
    • 我将Android开发水平分为:初、中、高 & 高级以上

    具体对应的知识内容如下:

    类型 定义 知识 & 能力范畴 特点 具体内容
    初级 最基础的Android知识 • 定性认识:知识的了解
    • 定量使用:知识的实际使用
    • 基础
    • 广度
    • Android基础使用(如四大组件)
    • Android常见机制(如多线程、动画等)
    • Java
    • 编程通用:数据结构、算法、网络
    中级 基础学习中更深一步的探索 • 高级应用
    • 源码分析
    • 新技术的使用
    • 深度
    • 与时俱进
    • 底层工作机制的原理
    • 自定义View
    • 性能优化
    • 热定技术:开源库、热修复、插件化
    高级 专注于某一垂直领域(如音视频、性能优化) 特定领域的知识深入 • 某一垂直领域
    • 机具深度 & 门槛
    专注解决特定领域的技术问题
    高级以上 技术专家 继续深入研究特定领域 更加深入某一垂直领域 • 专注解决特定领域的技术问题
    • 会产出 & 开源库 & 组件
    高级以上 架构师 在更高的层面解决项目难点 / 业务问题 专注于整体技术架构 • 技术架构设计
    • 具体业务的解决方案
    高级以上 管理层 面向团队、业务 & 产品 具备管理团队、统筹产品方向的属性 • 管理能力
    • 业务能力
    • 产品能力

    2.2、获取途径:有哪些高效的方式获取Android理论知识?

    既然已经知道要学习哪些内容了,下面,我将列举一些学习这些理论知识的有效途径。

    对于获取Android知识,我认为最有效的途径是:书籍 > 视频 > 技术博客 > 公众号

    具体介绍如下:

    类型 特点 应用场景 推荐
    书籍 具备完整知识体系、讲解全面的获取知识途径 成知识体系、循序渐进的学习 • Android:《第二行代码》、《Android开发艺术探索》
    • Java:《Java编程思想》
    • JVM:《深入理解Java虚拟机》
    • 数据结构:《大话数据结构》
    • 算法:《剑指Offer》、Leetcode网站刷题
    • 计算机网络:《计算机网络》(第五版)
    视频 • 更加生动、清晰的讲解知识 & 实践
    • 较大的缺点:耗费时间较长
    学习难度较高的知识 在线学习网站对应的Android学习课程(极客学院 & 慕课网)
    技术博客 针对某个知识点进行讲解 目的性搜索、深入学习 • 技术社区:CSDN、稀土掘金、简书
    公众号 针对某个知识点进行讲解(由于镶嵌在微信,所以容易链接到外部更多的渠道) 适合碎片化学习 Android公众号

    关于通过公众号的学习,本人的微信公众号:carson带你解析Android,希望能让大家系统的学习上述说的Android理论知识。

    2.3、学习方式:用什么方式记录?

    很多人看完书籍看完博客后当时很理解,但过一段时间就十分容易忘记。

    所谓“好记性不如烂笔头”,我认为,最好的记录方式就是将学习到的知识记录下来,我强烈推荐:撰写技术博客。

    对于技术博客的介绍如下:
    在这里插入图片描述
    撰写技术博客好处多多,主要包括:

    好处 具体描述
    提高开发效率 • 复杂使用的流程化:记录下繁杂的使用流程,下次再次使用时按部就班直接复用即可,常见的有:开源库的使用、某类需求的具体实现过程
    • Bug的快速解决:记录下问题发生的场景 & 解决方案,不仅能避免重复采坑,就算采坑了也能快速解决
    保证真正的掌握知识 • 只有做到以下3步我才认为是真正掌握了知识:敲代码实现、清晰表达 & 让别人听懂
    • 但大部分开发者都停留在第一步(敲代码实现),你得清楚明白:敲代码实现 & 用语言表达出来是两码事
    • 所以在整个过程中是非常能锻炼自己的思维能力 & 表达能力
    加深对知识的思考 • 在写作过程中,你会不断思考知识的各个方面
    为什么?因为如果思考的广度 & 深度不够,文章是没法继续写下去的
    • 这大概也是很多人没法坚持下来的原因:因为牵一发而动全身,知识总是从1个点扩散到整个面的,最终需完成的文章内容远远超出你的想象
    保证知识的正确性 • 自己的认知能力有限,所以对知识的理解总有偏差
    • 当分享出来博客后,良好的Android技术社区氛围能及时纠正你错误的理解,保证你的认知是正确的

    当然,还有一些其他福利,如:

    好处 具体描述
    提供影响力 当大量产出优质文章后,在Android领域的知名度 & 影响力就会提高、对自己在职场上的地位会有所帮助,这是一种莫大的荣誉感
    结识人脉 相对其他职业来说,程序猿较为封闭,即对电脑多、面向人较少;通过博客、Github等这些公开渠道,能结识更多的开发者
    知识共享 Android与IOS其中一个较大区别 = 开源,作为一名Android开发者,应秉着谷歌、Android开源的精神,将有用的知识分享给大家、帮助更多的Android开发者 & 共同学习,推进整个Android技术圈的进步

    2.4、总结

    在这里插入图片描述

    3、怎么应用Android知识?

    • 理论结合实践、学以致用才能更好地获取知识,对于深入理解Android,最好的实践就是 将理论知识运用到Android项目中
    • 所以,此处可以转化成两个问题:
      • 该如何寻找项目?
      • 如何将理论知识运用到项目中 & 提高项目的质量

    下面我将详细回答这两个问题

    3.1、该如何寻找项目?

    此处我给出3个方向:

    • 学校:课程设计、社团组织
    • 公司:实习、正职、创业
    • 技术社区:开源项目
    方向 具体
    学校 • 课程设计:请认真对待大学专业对于你职业相关课程的大作业(如Java、Android、数据结构),因为它可能会成为你一个不可多得的项目经验
    • 社团组织:多参与校内官方组织 & 社团组织,注重寻找具备校内影响力较大的产品的所属组织,因为在那里你能找到一个具备落地实践的开发经历 & 一群靠谱、能在职场上给予你很多帮助的开发团队
    公司 • 实习:如果你还是在校大学生,请安排好自己的大学上课时间,尝试出去公司参与拥有大量用户、真正的项目,特别是知名公司,对于在校大学生来说,这部分项目经历是含金量的提高。
    • 正职:如果你已经是正职员工,那么做好手头上的项目是你实践最好的方式。
    • 创业:这是能最大程度锻炼你全方面的能力,含:技术专业能力 & 基础能力;但这是一个可遇不可求的机会:找到靠谱的团队 & 有前景的方向,若有这样的机会,个人非常建议去尝试;假设最后能拿到投资,含金量是非常非常高、最能锻炼人的。
    技术社区 • 来源:自己的项目、当前技术热点/开源库、仿照主流的app;
    • 内容:完整App、某个功能模块、UI组件等;
    • 开源处:主流技术社区 = Github、CSDN、稀土掘金、简书

    3.2、如何将理论知识运用到项目中 & 提高项目的质量

    我认为,**项目中的所有功能 & 业务实现都是基于上述说的Android知识的,关键是在于:**是否能选择对的知识点 & 组合实现思路。

    提高项目质量,即提高项目含金量、增加技术含量 & 亮点,下面主要是从项目**本身的意义实现方式性能优化** & 影响力 4个方面

    类型 具体 备注
    意义 尽可能的让自己的项目使用的技术往学习到的知识点靠拢
    实现方式 • 具备一定的技术难点 & 技术技巧,而不是简单实现
    • 如:使用了某种新技术、新的开源库
    若无难点,要学会自己去制造难点
    性能优化 对项目在性能上提出要求 & 提出解决方案 与同类项目、一般要求的区别开来
    影响力 尽可能让项目可落地 & 具备一定的用户基数;
    • 具备一定的影响力 & 知名度

    具体执行建议

    个人认为最高效的执行方式是:以做项目为主知识体系学习为辅将技术博客作为一种学习的方式

    具体理解的是:
    在这里插入图片描述

    总结

    至此,关于我对Android学习内容、方向 & 具体实践方式 讲解到这里,此处作个简单总结:
    在这里插入图片描述
    凭借这样的学习方式,有幸获得腾讯、阿里巴巴、今日头条等Android客户端offer,所以,我将自己的一套Android学习方式总结出来分享给大家,希望各位也能获得心仪的offer!

    展开全文
  • Android学习启动篇

    万次阅读 多人点赞 2011-06-21 00:32:00
    近年来,手机移动平台...目前,手机平台如日中天的要数是iOS和Android了,尤其是iOS,Symbian已没落,WP7在挣扎。iOS一如既往地走Apple特色的封闭道路,然而它的强大在于能够建立一个完整的生态系统,乔布斯确实是天之
  • 所以,今天,我将献上一份《Android学习指南》,以自身的经验 & 所见所闻,旨在告诉大家,针对要学习的Android知识,该如何进行理论学习 & 实践,希望你们会喜欢。 请先阅读文章:Android知识图谱:我们.....
  • android学习路线

    千次阅读 2018-10-08 12:59:27
    转载链接: Android学习路线总结,绝对干货 记录下来,便于以后查看!
  • Android 学习路线图

    千次阅读 多人点赞 2016-11-03 18:36:44
    全面的Android学习路线图,和大家分享。
  • Android学习之路

    千次阅读 2016-08-31 20:13:15
    Android学习之路
  • Android学习记录(一)

    千次阅读 2021-01-08 10:52:59
    Android学习记录(1) 本次文章记录了我第一次开始学习安卓所做出的一些界面,由于是第一次做得到十分美观的结果,但是也获得了一些有效的成果。 Android的相关介绍 在进行新的学习内容之前,我们需要了解该门课程的...
  • Android学习笔记十二之Android基础UI三

    千次阅读 2016-06-29 16:47:23
    Android学习笔记十二之Android基础UI三
  • Android 学习小结

    千次阅读 多人点赞 2012-06-13 23:11:24
    Android 学习已有一年半有余,先后做过两款游戏、三款应用和搭建一台服务端,也了解过一些Android相关的源码(JDK、SDK和NDK)后来想学深入点,搞过两款开源项目(LGame 和 AChartEngine),还发布过自己的开源...
  • Android学习资料整理

    千次阅读 2016-02-28 12:23:51
    Android学习资料整理,希望对你有用! 1.书籍(只罗列了我自己买的并且是比较好的书)  (1).第一行代码(适合初级人员,入门级) 作者郭霖,江湖人称郭神,csdn博客大牛。  (2).Android 群英传 (适合初级人员,入门...
  • Android 学习笔记

    千次阅读 2011-07-01 15:56:00
    Android 学习笔记 (注:有些内容来自http://www.androidcn.net ) Android platform是一个用于开发移动程序的软件包,它包括了操作系统、中间件及一些关键应用。开发者能使用android SDK为Android platform开发...
  • Android学习笔记目录

    千次阅读 2011-01-18 16:37:00
    自己利用业余时间学习了... 一下是对应的笔记目录         Android学习笔记(一)之Notification <br /> <br />Android学习笔记(二) 之 参考网易做的健康计算器
  • Android学习路线总结,绝对干货

    万次阅读 多人点赞 2016-04-26 18:13:52
    最近看到很多Android新手问Android学习路线,学习方法啊,如何入门啊,所以我从网上找了一些资料,然后以我的工作经验给大家总结一下,让你们少走弯路,提取一些工作中经常用到的技术。二、学习知识汇总1、
  • Android学习网站推荐

    万次阅读 2010-11-04 19:15:00
    Android学习 网站
  • Android学习之路3——数据库SQLite的使用以及Android申请权限 一、实验题目 数据存储 学习SQLite数据库的使用 学习ContentProvider的使用。 复习Android的界面编程。 二、实现内容 进入程序,可以选择单选按钮...
  • 最近整理了一下这段时间android学习的资料,发现一个比较完备的android体系结构,来源记不清了,保存一下,为了以后能方便查找
  • 我的android学习笔记

    千次阅读 2014-02-13 11:42:22
    Android学习笔记(四六):互联网通信-文件下载 2011.11.1 Android学习笔记(四五):互联网通信-HttpClient、XML解析(W3C) 2011.10.27 Android学习笔记(四四):第三方Java库的使用 2011.10.25 And
  • Android学习资源网站大全

    千次阅读 2016-03-13 17:21:19
    Android学习资源网站大全文章来源: https://github.com/zhujun2730/Android-Learning-Resources整理了一些Android的博客链接、学习资源网站。站在巨人的肩膀上,会看得更远。整理这一份资源也方便更多的Android...
  • Android 学习方法

    千次阅读 2009-03-22 12:16:00
    android 学习方法: 1.了解什么是android2.建立开发环境3.阅读sdk文档怎么阅读,方法,步骤?http://linuxdevices.com/articles/AT9900056470.html 学习android 路径 ...
  • Android实战技巧:Android学习资源总结

    千次阅读 多人点赞 2011-11-17 23:20:24
    要想对一门技术有所了解,或是掌握一门技术...学习Android开发也是一样,本主将总结一下在Android学习中的一些比较好的比较有价值的学习资源。 1. Android SDK documents 这个是非常容易获得的,你可以从官网来看,也
  • Android学习指南》目录

    千次阅读 2011-11-28 20:29:10
    Android学习指南的内容分类: 分类 描述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不要先看Android的课程,这样会很累。 1.Android学习指南基础篇 对于有Java基础...
  • Android学习——手把手教你实现Android热修复

    万次阅读 热门讨论 2018-07-07 20:50:50
    最近一段时间看了一些关于Android热修复的知识,比如Andfix,Tinker,Sophix等,看了这些框架的原理,就想着自己能不能手撸一个简单的demo。下面我们就来自己动手实现Android热修复吧。 热修复实现原理 所谓热修复...
  • Android 学习之路

    千次阅读 多人点赞 2016-07-10 21:24:43
    这篇博客背后的故事一路走来很不容易,刚好...收到一些朋友的微博私信,说能不能给Android新手们一些指导,我只能说指导谈不上,毕竟我也很多东西正在学习中,与此同时一大学同学准备转行Android,可以说是从头开始,那
  • Android学习笔记十八之TabLayout标签布局
  • Android优质学习资源、项目和网站大整合(Android学习以来的全面资料整理)
  • Android学习笔记十七之GridLayout网格布局

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 164,335
精华内容 65,734
关键字:

android学习