基础
- 数据结构
常见的容器的使用,时间,空间效率,优缺点。
比如 LinkedList,ArrayList区别、HashMap/TreeMap/LinkedHashMap区别。
有C语言基础的话,可以阅读 <数据结构与算法分析—C语言描述>这本
- 设计模式
常见的设计模式及适用场景。 单例、Builder、原型、工厂、策略、状态、责任链、命令、观察者等等,设计模式是通用的,Android的SDK里面都有体现
有C语言基础的话,可以阅读 <设计模式 可复用面向对象软件的基础>这本
平台相关
- Android系统
设计思想(比如 为什么有Activity,Task栈)、安全策略、进程调度方式、系统稳定性
Android应用程序开发以及背后的设计思想深度剖析 - Android的Framework
例如 Binder和AIDL运行原理、WindowManager和View的渲染流程、ActivityManagerService等等
网上很多讲这些的技术博客
一些常见的App架构
MVC/MVP/MVVM,数据绑定等概念一些开源库的实现
RxJava、Retrofit、Glide/ImageLoader等开源库的实现,有些不用太关注具体的代码,看整体的结构和分层及实现方式(注解)。
开源库列表参考 Android 通用流行框架大全
相关的东西很多、很杂,不用想着一次能系统的看完,能做到每天看一点,就很好了。
后记
为什么要了解那么多的原理?
是因为大多数人的能力早就过了实现功能的初级阶段了。当业务复杂到一定程度,良好的可维护的代码结构、性能优化和内存优化才是重点。往往都是那么一点点优化和一个Bug却需要花很多的时间,理解原理有助于提高自己解决这些问题的能力。