Android 中 Lru 缓存算法分析

Android 项目设计到大量 图片,文件时,都会使用到缓存技术,一般项目框架都会帮助我们封装好,我们只需要指定具体的缓存策略就可以了;缓存的策略或者说算法有很多种,比如 FIFO,FILO,LRU 等,本文主要分析一下 LruCache 以及 DiskLruCache。LruCache 在 Android 3.1 之后就出现在 Android 源码中了,DiskLruCache 得到官方推荐,但还未出现在源码里。查看 DiskLruCache.java 源码,另外,JakeWharton 也有一份 DiskLruCache,可以看看。

Read More

谈谈 Java 的引用类型

前面有一篇谈内存泄漏,当 Activity 使用到 AsyncTask 更新 UI 时,需要使用 WeekReference 来引用 Context,以免造成 Activity 不被回收,内存泄漏。可见合理的使用引用类型是多么的必要。这里就专门挑一块土地,梳理一下 Java 的引用类型。

Read More

ADB 常见命令

Mac 下的 iTerm 终端真是炫酷到爆,而且超级好用,在调试 Android 应用的时候,在终端下使用一些 ADB 命令,能帮助我们提高不少效率,下面就整理常见的一些 ADB 操作。

Read More

谈谈 Handler 机制

说到 Handler,立马会联想到异步消息机制,从而扯出 Looper 以及 Message。一个异步消息机制的流程大致这样:Handler 发送一个 Message 进入到 MessageQueue 中,Looper 不断的轮询 MessageQueue 取出 Message,然后将消息 分发给 发送给它的 Handler 对象,最后我们复写 handler 的 handleMessage(msg) 方法处理消息。下面详细分析。

Read More

AsyncTask 源码解读

前面有一篇文章说了说线程池,如果对线程池还不太了解的,请务必先了解一下,因为这次要说的 AsyncTask 正是基于 线程池,它的源码只有 600 多行,刨去一堆注方法释,在刨去定义的线程池,代码真的不多!

Read More

Android 内存泄漏 的解决方案

Android 内存泄漏是很有必要引起极大重视的一个话题,因为绝大部分的内存泄漏是可以避免的,如果开发者的目标只是开发出来,而不思考自己写得代码是否隐藏着风险,是否可以进一步优化,那么毫无疑问,永远无法成为高级工程师。下面我来梳理一下可能引起内存泄漏的代码以及相应的解决方案。

Read More