Android程序员自我修养

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 地址

https://github.com/openjdk-mirror/jdk7u-jdk/blob/master/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java

介绍

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 地址

https://android.googlesource.com/platform/frameworks/base.git/+/nougat-mr2.3-release/core/java/android/widget/StackView.java

介绍

Android系统代码提供的一个非常复杂的卡片控件。代码以及实现效果都很复杂,几乎是常规业务条件下能够接触到的最复杂控件样式了。卡片控件有很多类似的库,这里只以官方库为例。

重点

  • 如何实现的卡片切换效果* 代码设计中对于方法抽象,继承与复写的考虑

  • 在复杂控件中对于Animator,canvas等的搭配使用

13. Dagger 2

github地址

https://github.com/google/dagger

介绍

Google发布的依赖注入框架。在Android端使用依赖注入的不二选择。在很多情况下使用dagger能够很好的解决模块解耦问题。

重点

  • 依赖注入是什么

  • 几种注解承担什么样的角色

  • apt的使用方式

  • 如何跟生命周期相结合的

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,539评论 25 709
  • 生命中感恩遇到慈悲大爱智慧的格西老师,让我通过种子法则的学习放大格局,有意的做出慷慨的行为,去施善帮助能帮到的人。...
    张蓉萍阅读 146评论 0 0
  • 他在车流挤压人流的十字路口边缘呆了很久,盘算着这个世界是否应该毁灭,直到一声鸣笛将他的思索拉回现实:“你挡住我的路...
    语彦阅读 165评论 0 0
  • TmemoryStream.ReadBuffer方法 声明:procedure ReadBuffer(var Bu...
    笑而不语_ddbd阅读 181评论 0 0
  • 以为,谈恋爱这件事情,它并不是我们生活中的必须品,更多的时候,它是我们生活的调味剂,它的存在是为了让这平凡而又枯燥...
    是周周哟阅读 248评论 0 0