写在前面的话
之所以写这么一个东西,一方面是为了提醒自己还要去掌握哪些东西,还有一方面是为了将自己所知道的东西分享给大家,让大家能在偶尔的迷茫中看到一点点的方向,知道自己需要去弥补或者去强化哪些东西,而不是作为一个开发者天天守着一亩三分地傻乐。
如果能做到这一点,我觉得我的目的也就达到了,这件事也就变得非常有意义了。
2008年9月23日,Google发布了Android的第一个版本:Android 1.0,当时并未有特别名称[7]。全球第一台Android设备HTC Dream(G1)就是搭载Android 1.0操作系统[8],
——维基百科
粗略的算一下,Android 问世差不多也算是7年之久了,到今年Android 已经发布7.0,而如果你连5.0都还玩不溜,我觉得是时候该反思一下自己了。
别跟我说你1年开发经验还是3年开发经验还是怎么怎么的,市场是不会因为你只有1年开发经验就会原谅你不懂某些东西。2016年了,出了这么多新技术,作为众多Android 开发者的一员,你就需要掌握今年的新技术,别觉得跟自己不相干,更不要因为自己在公司安安稳稳的,就误以为自己不需要学习了。如果有这种思想,那么小伙子,你不适合在互联网待下去。
废话不多说了,依我的拙见,接下来稍微说一下我认为一个合格的Android 开发者需要知道的东西。如有遗漏的地方或者错误的地方,请各位指正,不胜感激。
能够独立开发
很多公司都需要一个做过独立开发或者虽然没做过但能够独立开发的一个人,要求这个,并不是说把你招进来就让你独立开发,而是一个做过独立开发的人,整体的项目把控能力是有的,无论是好还是坏,至少是有的。诸多好处,我就不一一列举了,毕竟今天的篇幅重点不是这个。
熟练使用Android Studio
Google 早已停止对 ADT 的更新,而早在2013年 IO 大会上Google就推出了Android Studio这款 IDE ,而在15年的时候已经陆陆续续有很多开发者迁移到Android Studio上面来了,而今年,一个不会Android Studio的开发者是很鲜见的。也许刚开始的迁移会很痛苦,但是相信我,用了一个月之后你就再也回不去了。
Github 、 Stack Overflow、CSDN、知乎、开源中国…..
多渠道打包、签名、发布版本上线
面向对象的思想
RecyclerView等
你说你还在用ListView、GridView?那你知道RecyclerView吗?
Android 5.0 、6.0、7.0新特性
不解释
数据存储
IPC 机制
Activity
天天都在用,但你真的会吗?你真的知道它是怎么回事吗?
Fragment
从Fragment问世到现在,一直有两种观点争论不休,一种是主张使用Fragment,另一种是主张反对使用Fragment的。孰对孰错,不分伯仲,但是无论你是哪一派,前提你得熟练掌握了它,然后再谈其他的。千万别因为偷懒嫌麻烦,就把自己归类为反对使用Fragment的那类人,你这是自欺欺人。
Handler 机制 、 AsyncTask 、EventBus 、Otto
多了解一下Android 的设计思想以及原理,好处有很多。我见过很多人,甚至AsyncTask都拼错。
ANR 异常出现的原因及处理
样式、主题、各种动画
沉浸式状态栏
5.0以上的手机的确很容易就能做到,但是4.4到5.0之间的就不太好做,4.4以下的根本就没有,那么你知道为什么是这样吗?你又是否知道怎么做低版本兼容呢?
OOM 异常处理及大图加载
LRUcache 及三级缓存原理
ImageLoader原理、Glide原理、Fresco原理、Picasso原理等等
为什么只是单纯的加载个图片而已,这么多大公司都搞一个出来呢?比如Google推了Glide,Facebook推了Fresco,Square推了Picasso,他们到底做了什么处理?谁的更好呢?哪一个更适用于你的项目呢?
二维码扫描
WebView 与 JavaScript交互
jni
至少你要了解一点,会使用
屏幕适配
必备,不解释
自定义控件、事件分发机制
想成为高级开发人员不?
设计模式
23种设计模式不要求全会,至少要理解大多数常见的,主要是思想
MVC、MVP、MVVM
加密
难道除了MD5以外就没其他的了么?MD5那也算加密?
听过 RSA 没? AES呢? DES呢?内存
堆栈自不必说,内存优化、内存泄露、溢出、分配策略等等等等
三方
支付:比如支付宝、微信、银联等
分享:比如微博、微信、QQ
登陆:如上
地图:百度、高德等
推送:Umeng、JPush、百度等
统计、更新
即时通讯
直播
加固等等掌握
比如:okhttp、nohttp、volley
比如:RxJava、Retrofit 2.0、RxAndroid
比如:ButterKnife、Dagger2、otto、EventBus
比如:Dex分包、增量更新、热修复、依赖注入
比如:React Native的概念
比如:apk瘦身、加固、多渠道
比如:ant原理、gradle原理、maven
等等等等
以上这些是我暂时想到的,后续如果有必要的话,我会再加上。
这些东西我也有很多不会,我希望自己能在精力透支之前把他们去逐个击破,希望各位能做到“见贤思齐焉,见不贤而内自省也”。
有些时候并不是说非要等到自己要用的时候才去学才去准备,有很多东西不是等你准备好了才会给你的。
我觉得有一件很无奈的事情,就是大多数人平日里埋怨不公平,感觉自己一直没有碰到好的机会,然而当机会来临了,却发现自己接不住,根本没有能力。
后续会再更新,暂时是这些。