Android源码学习 |

对 SharedPreferences 再多一点了解

作者:Joe 审阅者:HugoXie、 allen 序言相信很多人面试的时候被问到过 Android 中的数据持久化,其中有一个方法就是使用 SharedPreferences 来保存一些简单的数据到本地。如果你对 SharedPreferences 还不了解,建议先阅读官方文档,再写个小 demo 实践一下。 SharedPreferences 用的比较多的同学可能知道,在 API9 以后加入了一个新的方法 apply() ,官方文档中可以看到在不关心返回值的情况下尽量 ...

  • Joe
    Joe
46 min read
Android源码学习 |

SparseArray 的使用及实现原理

作者:Joe 审阅者:allenwu 序言相信大家都用过HashMap用来存放键值对,最近在项目中使用HashMap的时候发现,有时候 IDE 会提示我这里的HashMap可以用SparseArray或者SparseIntArray等等来代替。 细心的朋友可能也发现了这个提示,并且会发现并不是所有的HashMap都会提示替换。今天就来一探究竟,到底SparseArray跟HaspMap相比有什么优缺点,又是在什么场景下来使用的呢? 如果你对于HashMap的实现原理还不是 ...

  • Joe
    Joe
22 min read
Android源码学习 |

LruCache 源码学习笔记

转载请附原文链接: LruCache 源码学习笔记 上一篇笔记分析了 Volley 中的 ImageLoder ,作者推荐使用 LruCache 来作为一级缓存。本篇笔记就来分析一下 LruCache 是如何实现缓存的。如果你对 LruCache 还不了解,建议先学会使用,本篇笔记直接上源码,不会介绍使用。 LruCache 是 Android 中的一个缓存工具类,在 Android 3.1 的时候加入 util 包中,对于低版本的上可以在 support 包中找到这个类。该 ...

  • Joe
    Joe
13 min read
Android源码学习 |

Volley 中的ImageLoader源码学习笔记

转载请附原文链接: Volley 中的ImageLoader源码学习笔记 本篇笔记建立在上一篇分析 Volley 源码的基础上,如果你对 Volley 的源码还不了解可以看看上一篇笔记, 传送门 在 Android 中还有一大头疼的问题就是图片的加载, Volley 中封装了一个 ImageLoader 的类可以用来加载图片。本篇笔记就来分析一下 Volley 是如何处理图片加载的。 主要涉及的类: ImageLoader (Volley中的) ImageRequest ...

  • Joe
    Joe
32 min read
Android源码学习 |

Volley源码学习笔记

转载请附原文链接: Volley 源码学习笔记 这几天开启了疯狂的源码学习模式,今天学习的是网络框架 — Volley。依旧按照一贯的思路,从用法入手,再全面分析。 其实把 Volley 理解成为一个 Request (请求)的调度器可能更容易学习。 本次分析主要涉及到的类: Volley — 获取队列的帮助类 RequestQueue — 请求队列,维护请求调度 NetWorkDispatcher — 网络请求线程 CacheDispatcher — 缓存线程 Reque ...

  • Joe
    Joe
59 min read
Android源码学习 |

AsyncTask源码学习笔记

转载请附原文链接: AsyncTask 源码学习笔记 上一篇笔记分析了线程池的源码 ThreadPoolExecutor源码学习笔记 作为 Android 开发者不得不说说 Android 中的系统级异步框架 — AysncTask 几乎大部分 Android 开发者都用过AysncTask。这是一个专注于其他线程与 UI 线程通信的一个框架。官方的介绍: AsyncTask enables proper and easy use of the UI thread. Thi ...

  • Joe
    Joe
34 min read
Android源码学习 |

ThreadPoolExecutor源码学习笔记

安利一波组织:itsCoder 转载请附原文链接:ThreadPoolExecutor源码学习笔记 大部分分析以注释形式写在源码中 本篇笔记将从 ThreadPoolExecutor 的一次使用上来分析源码,主要涉及线程池创建,execute 的步骤,任务添加到阻塞队列,线程从阻塞队列中拿取任务执行,线程的回收,线程池的终止。 涉及到的类有 Executors — 获取线程池 ThreadPoolExecutor — 线程池 Worker — 工作线程 LinkedB ...

  • Joe
    Joe
56 min read
Android源码学习 |

Handler源码学习(三)MessageQueue入队插队

Handler源码学习(一)流程Handler源码学习(二)Message对象池Handler源码学习(三)MessageQueue入队插队 1.消息入队消息队列与Message对象池的结构很像,也是通过对象之间通过next指向形成链表结构 这时候加入一个msg消息,先来看如果消息队列为空的情况 //判断消息队列为空时,会直接将这个msg赋值给mMessage,并将p赋值给msg.next,这时next当然时nullmsg.markInUse();msg.when = whe ...

  • Joe
    Joe
18 min read
Android源码学习 |

Handler源码学习(一)流程

本系列笔记是我阅读Handler及相关类的源码时所记录的一些之前所不知道的知识点,该系列分为三部分,整体流程,Message对象回收原理,MessageQueue管理队列Handler源码学习(一)流程Handler源码学习(二)Message对象池Handler源码学习(三)MessageQueue入队插队 1.创建handler — 默认构造方法会获取当前线程的looper,也可以传入指定的looper/** * Default constructor associate ...

  • Joe
    Joe
17 min read