前言
笔者自学 Android 已有多年,期间实习并工作至今。深感知识点零散且不够深入,常遇瓶颈,故整理此文。旨在系统地、深入地学习 Android 的重难点,使能力上一个台阶。下文将罗列 Android 知识体系中比较高频、重要或难懂的知识点,作为个人学习总结笔记,供参考。
Android 开发者打好编程基础
技术栈
- Java 基础 (Kotlin)
- OOP 思想与设计模式
- Android 基础
- 数据结构与算法
- JVM 相关
补充能力
除了编程基础,还需要补充以下能力:
- 喜欢钻研的兴趣
- 良好的英语理解能力
- 善于思考和总结的习惯
- 高效率的学习方法
- 能够机智地利用 Google 搜索
- 善于利用工具
- 和现实事物关联类比的能力
- 对待问题的态度
1. 喜欢钻研的兴趣
尽管高级编程语言的出现让我们将精力更多的放到业务上,而不是编程细节。正所谓知其然知其所以然,钻研细节可以更好地帮助我们实现业务,做到了然于胸。
2. 良好的英文理解能力
由于一些原因,我们接触到的一些技术的资料都是二手资料,而这些二手资料往往在知识传递的效果上有一些折扣,甚至是偏差。英语可以说是(安卓)编程提升的加速器。同时,英语好的话,可以辅助我们写出更具有自解释的代码。
3. 善于思考和总结的习惯
真理越辩越明,同样技术越思考越清晰。对于一个技术通常我们需要抱有这样的疑问:
- 它是什么?一句话概括
- 解决了什么问题?存在的意义
- 怎样解决了问题?内部的实现
- 它的缺点是什么?多角度分析
例如关于 WebView 的考虑点总结:
- 是否支持 JS
- 是否支持 mixed content (https 网页加载 http 图片)
- 与 JS 通信的问题,比如给方法增加 JavaScriptInterface 注解
- 是否自身处理某些 URL(协议不同,不让 flipboard://showSection 等)还是交给外部程序
- 关于 UA 中是否加入特定的标识,比如 Flipboard 字样
- 是否增加特定的 header
有了思考,我们需要以文字的形式记录下来,这也应了那句老话,好记性不如烂笔头。建议以博客的形式总结出来。
4. 高效率的学习方法
- 理清楚概念很重要
- 做好控制变量法
- 多动手实践,与理论结合
- 抓住重点,剔除干扰因素
其实,任何复杂的事情都是由简单的事情组成,编程也是一样。在编程过程中,我们会接触到很多概念,这些概念很重要,对于概念的一知半解往往会使得我们越走越慢,学习起来原来越困难。因此对于编程中的概念要务必理解准确和深刻。
控制变量法:我们在初中做实验的时候,经常会用到控制变量法。在编程中也是。当我们在解决问题时,也要做到控制一处修改。比如我们项目中需要修一个 webview 相关的 bug,我们要想一想能不能脱离现在庞大而负责的项目,单独写一个简单的变量单一的 sample 来重现,做到快速和小粒度验证。
多动手实践与理论结合:很多时候,我们学习新技术的时候,我们应该先学会使用它,有了初步的认知之后,便于我们更好的理解和深入研究。比如关于 GUI 的东西,我们最好时不时做出一些东西,理论和实践要做到相辅相成。
建议
对于初学者,大学生我有一些建议希望你们能好好听听。
越来越多的关于互联网寒冬的消息传出,听见越来越多的人抱怨 Android 找工作越来越难,已经趋近饱和。Android 开发的红利期正在逐渐消逝,尤其是对于初级和中级开发人员。
关于现在加入 Android 开发队伍,我并不反对。仍然可以赶上红利期的有容器,机器学习和人工智能。但是无论选择哪一种技术,即便是 Android,请具备好的基础和较强的编程能力和足够的爱好。不要仅仅追求物质。
如果你已经成为了 Android 高级架构师,那么你根本不用担心 Android 开发前景,因为你就是前景!


