我对Android的理解

标签: android 学习路线 源码学习
39514人阅读 评论(45) 收藏 举报
分类:

前言

写这篇文章是为了和大家描述下我对Android的理解,同时会讲述下我后面的技术规划,希望能够对大家有点参考价值。大家都想学好Android,那么怎么才能学好呢?这个真不好说,但是我可以和大家交流下我自己的心得,当然仅限应用层开发,因为我本身是侧重应用层开发的。

知识的分类

Android中有很多知识点,虽然说大部分知识点都不难,但是量很多,这就会给人一种很琐碎的感觉。在这种情况下就要对知识进行分类,我对Android知识的分类为:
1. 基本知识点
比如四大组件如何使用、如何创建Service、如何进行布局等。这类知识是需要熟练掌握的。
2. 稍微深入的知识点
比如AIDL、Binder、多进程、View的绘制流程、事件分发、消息队列等。这类知识对于高级开发者来说也是必须掌握的。
3. 基本知识点的细节
比如Activity的启动模式和标记位、Service同时处于start和bind状态时的停止问题、AsyncTask的同步异步问题以及使用时的限制等,这种问题还有很多。这类知识点,大家在开发过程中可以并不会去注意,这会导致一个问题,那就是开发应用没问题,但是在面试时面试官只要稍微问下细节或者特殊情况,就hold不住了。
4. 系统核心机制
比如主线程的消息循环、主线程如何和AMS如何跨进程交互、SystemServer进程中的各种Service的工作方式。这类知识对于高级开发者也是建议掌握的,因为它们可以让开发者理解Android的运行体系。
5. 琐碎的知识点
此类知识点我把它们定义为一些重要但是没有什么技术难度的问题,比如如何打开一个网页、如何打电话、如何发短信、如何定位、多点触控等,这类问题往往不好记忆,但是需要的时候去查一下就能立马搞定。

类别 描述 开发者所需级别
基本知识点 熟练掌握 初中级
深入知识点 熟练掌握 中高级
基本知识点的细节 掌握 高级
系统核心机制 熟悉、掌握 高级、资深
琐碎的知识点 了解 所有级别

如何学习

关于Android知识点的学习,无非就是看书、看官方文档,写代码等,这个是需要投入时间的。大家比较容易困惑的就是看Android源码,觉得“看不懂”,这是可以理解的。看源码的时候我们要侧重对流程的把握,刚开始时不要纠结太多的代码细节。有时候一遍看不懂的话就多看几遍,这样慢慢的就有眼熟了,眼熟后就能看懂了。另外看源码要讲究切入点,源码那么多从哪里开始下手呢?其实我建议先找一些自己感兴趣的切入点,比如大家有没有想过“Activity启动时,Activity的对象时在什么时候创建的?”这个问题,因为Java时面向对象的语言,所以Activity必须要创建一个对象,带着这个疑问去分析,一步步揭开谜团也是很有意思的事情。针对上面这个问题如何去分析Activity的对象到底是何时创建的呢,其实很简单,沿着Context的startActivity方法跟下去就好。采用这种方式去看源码,当看了一些主题后就会有一种贯穿的感觉,而这种感觉其实就是知识体系,这个知识体系是建立在Android的整体之上的。但是,不建议大家上去就看C层的源码,可等对源码有一定理解后再去看。关于琐碎的知识点,建议大家不好花费太多时间在上面,没有太大意义。

要知其所以然

在学习过程中,我们还要有质疑的精神。很多知识点我们掌握了,但是为什么是这样的,这个问题可能很多人并没有去想过。比如RemoteViews只支持有限的系统View,但是为什么呢?有没有想过?如果大家去想这个问题,那么就可以更好地理解RemoteViews的本质。再比如AsyncTask要求第一次访问这个类必须在UI线程,这一点我想大家都知道,但是为什么必须这样的?如果第一次访问AsyncTask在子线程会怎么样呢?带着这些疑问去思考去探索,那么你的技术档次就会更上一层楼。

我的技术规划

就我目前来说,我还有很多东西不太会,不管是Android还是其他技术。对于Android来说,源码我还需要更深入地看下去,同时我还需要去进一步学习Linux shell脚本以及Linux的内部实现,这样可以进一步地理解Android的实现,IOS我也需要稍微了解下,这样能够扩宽我的知识面,毕竟IOS也属于移动开发,但是我不会发很多精力去研究IOS,事实证明,“什么都擅长就等于什么都不擅长”,一个人要成为全栈工程师真的非常非常难,而且国内的招聘很多不需要全栈工程师,而且所谓的全栈工程师很可能在面试中就被淘汰(由于深度不够的原因)。我还会学习一些编译环境的搭建,比如Gradle、Gerrit等。按照这种规划去学习,我在Android就会达到一定深度并且有了Linux内核知识的支撑,然后了解IOS开发,同时还能搭建环境啥的,至于C、C++、Web开发之类的知识点,我在学校时就有初步的了解,这样一来,知识的广度和深度我都有,我认为应该是不错的规划。

查看评论

对android应用程序的理解

在判断一个应用程序是系统程序还是用户程序时,经常用到下面一端代码: int flags = packInfo.applicationInfo.flags;//应用程序信息的标记 ...
  • Amo_te_ama_me
  • Amo_te_ama_me
  • 2016-04-07 08:53:10
  • 847

我对Android的认识

这篇文章有点像,之前我谈的对计算机的认识,都是很浅显,没有依据的一些理解。 之所以说没有依据,是我没有仔细的深究,因为,我看了很多资料,很难懂,不是很理解,却又理解一点点。自己不现在做一下梳理,再把...
  • iweiwei520
  • iweiwei520
  • 2016-04-22 20:19:46
  • 446

android的优点与不足

浅谈自己对android优点与不足的认识: (以下认识会随着认识的不断深入不断更新)       几点大家常说的优点:             (1) 开放性、开源、免费、可定制   不得不说a...
  • jackyCoder
  • jackyCoder
  • 2016-09-19 17:33:02
  • 7639

Android初试--了解和认识Android

1.了解Android        Android一词本义指“机器人”,是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用...
  • guizhaiteng
  • guizhaiteng
  • 2013-09-17 17:57:49
  • 1501

我对安卓的理解

本质就三大块:数据源、数据传输、界面展示。 数据源负责存储、读出数据; 数据传输就是一根线; 界面负责将读到的数据合理的展示出来;接收用户录入的数据;给予用户更好的交互体验;根据上面的本质,具体...
  • wwww_dong
  • wwww_dong
  • 2017-02-23 18:00:51
  • 246

关于AndroidTv端的小白理解

了解:接触AndroidTV端时间不长,也就一个月左右。相对于手机端,最大的区别在于多了一个焦点(focus)控制。也就是说,电视端是用遥控器的焦点红外线控制代替了手机端的滑动,按钮点击跟手机的点击事...
  • qq_38306233
  • qq_38306233
  • 2018-04-19 01:45:22
  • 12

Android面试之---讲一下你对Activity的了解(面试必问的).

这篇文章会涉及到以下几个内容 一 Activity的生命周期 二 让Activity变成一个窗口:Activity属性设定 三 你后台的Activity被系统 回收怎么办:onSaveInstanc...
  • miaozhenzhong
  • miaozhenzhong
  • 2016-09-08 13:28:48
  • 552

转载CSDN中的博客

对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间里面。...
  • u012702708
  • u012702708
  • 2016-10-14 11:42:32
  • 85

你如何评价Android系统?优缺点。

答:Android平台手机 5大优势:  一、开放性  在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开...
  • hanchendong
  • hanchendong
  • 2016-05-15 23:24:07
  • 3257

滴滴技术专家任玉刚:让你的职业迷茫从哪来回哪去

今天给大家推荐的是《Android开发艺术探索》的作者(滴滴技术专家)任玉刚老师的直播课,感兴趣的同学可以通过文末的方式参与本次活动(喜欢的同学欢迎转发)。 我是任玉刚, 我来我想说。 ...
  • urDFmQCUL2
  • urDFmQCUL2
  • 2017-11-02 00:00:00
  • 1433
    我的书
    Android art
    Amazon     京东     当当

    公众号
    聚焦于『Android开发前沿、AI技术、职业发展、生活感悟、妹子图』,欢迎大家关注。
    QQ交流群:635778578
    个人资料
    专栏达人 博客之星
    等级:
    访问量: 203万+
    积分: 1万+
    排名: 763
    博客专栏
    最新评论