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的使用方式
-
如何跟生命周期相结合的
网友评论