Android程序员自我修养
1. Android-Universal-Image-Loader
github地址
https://github.com/nostra13/Android-Universal-Image-Loader
介绍
老牌的图片异步加载框架
重点
整个框架分多少个模块,每个模块的作用是什么
如何仅通过interface就将框架的整个流程串联起来
如何进行内存管理的,LRU是种什么算法,有没有比LRU更好的?
用到了多少个线程池,这些线程池之间的区别是什么,如果只用一个线程池可以么?
2. Retrofit
github地址
https://github.com/square/retrofit
介绍
十分简洁的网络请求框架,底层由okhttp负责执行网络请求。
重点
如何自定义注解
如何将方法转化成Request对象
ServiceMethod的作用
adapter,converter的设计思路,如果想要实现将okhttp也变成可替换的应该如何设计代码
InvocationHandler与泛型的使用
3. Volley
github地址
https://github.com/google/volley
介绍
Google出品的网络请求框架
重点
Dispatcher和RequestQueue的设计实现
RetryPolicy 策略模式的实现
4. Glide
github 地址
https://github.com/bumptech/glide
介绍
Google出品的图片加载框架
重点
内存管理和线程管理的方式,engine的作用
如何利用生命周期来控制加载的暂停与恢复
如何处理带优先级的请求
各个模块、类、方法等职责划分以及命名习惯,代码规范等
5.Tinker
github地址
https://github.com/Tencent/tinker
介绍
腾讯出品的热更新框架
重点
实现原理,如何实现的补丁dex替换
如何实现plugin
文件有效性校验的方式
dex合成
6. Android-Architecture
github地址
https://github.com/googlesamples/android-architecture/tree/master
介绍
Google出品的架构介绍
重点
各个架构的实现方式以及特点
如何在各个架构下做单元测试
7. OkHttp
github地址
https://github.com/square/okhttp
介绍
应该是Android开发使用最广泛的网络框架了
重点
如何自建socket发送数据
连接池怎么复用连接的
websocket的流程,心跳的处理,建立长连接之后如何收发消息
缓存控制
责任链模式
8. ThreadPoolExecutor
github 地址
介绍
jdk中线程池实现的源码。
重点
如何实现一个生产者消费者
停止消费者线程时
awaitTermination
的作用如何做到控制核心线程数的
BlockingQueue的使用方式,ReentrantLock的使用方式,Condition的作用以及使用方式
9. Design Pattern
github地址
https://github.com/iluwatar/java-design-patterns
介绍
包含了几乎所有常见的设计模式以及代码示例
重点
各种设计模式的使用场景,为什么这么设计
在Android Framework中哪些部分是和设计模式对应的
10.AirMapView
github 地址
https://github.com/airbnb/AirMapView
介绍
AirBnb出品,地图的抽象封装层,内置提供GoogleMap与网页地图,思路稍微些奇怪,地图的实现层是通过Fragment来做的,而不是View。并且这种抽象封装对于百度或者高德地图不太适用了,需要针对性的进行改造。
重点
- 如何针对特定场景抽象定义与具体实现
11. Android-Job
github 地址
https://github.com/evernote/android-job
介绍
EverNote出品,对Android各个系统版本后台任务的统一封装,内部实现了AlarmManager,JobScheduler,Gcm等。
重点
上层封装与底层实现的解耦方式
对于不同系统版本,使用不同api的封装方式
12.StackView
github 地址
介绍
Android系统代码提供的一个非常复杂的卡片控件。代码以及实现效果都很复杂,几乎是常规业务条件下能够接触到的最复杂控件样式了。卡片控件有很多类似的库,这里只以官方库为例。
重点
如何实现的卡片切换效果* 代码设计中对于方法抽象,继承与复写的考虑
在复杂控件中对于Animator,canvas等的搭配使用
13. Dagger 2
github地址
https://github.com/google/dagger
介绍
Google发布的依赖注入框架。在Android端使用依赖注入的不二选择。在很多情况下使用dagger能够很好的解决模块解耦问题。
重点
依赖注入是什么
几种注解承担什么样的角色
apt的使用方式
如何跟生命周期相结合的