Glide源码导读

最近比较无聊,为了找点事干,就花了两天时间把Glide的源码大概看了一下。刚开始看Glide的源码头脑还是比较乱的,因为作者引入了几个概念,又大量用了泛型,如果不了解这些概念读起代码来就比较痛苦,我也没有详细看各种实现细节的东西,只是了解了下这个框架的大概样子,在这篇文章里,我会介绍下Glide中的一些关键概念,并走一遍图片加载流程,如果你要阅读Glide源码的话,应该多少会有点帮助。

LinkMovementMethod与URLSpan相关的两个问题

通过LinkMovementMethod与URLSpan给TextView添加链接就不说了,大家都知道,不过在使用过程中遇到两个问题,在这里记录一下。

  • 一是LinkMovementMethod导致TextView可滚动,可能使文本错位。
  • 二是行尾链接的点击区域,可能点击行尾的空白仍会触发链接点击,有些机型甚至会同时触发View.onClickListener.

UniversalImageLoader的一个小问题

最近在使用UniversalImageLoader时遇到了一个小问题,多个地方同时通过ImageLoader.getInstance().loadImage(url, new ImageSize(dp72, dp72)...加载图像时,有一定机率只有部分地方能正确地加载到图片,其他地方是什么结果呢?从Log看是这个样子:

Toolbar作为ActionBar与标题居中

Toollbar作为ActionBar很简单,直接获取到Toolbar后调用setSupportActionBar(toolbar);就行了,但是如果整个应用中统一使用Toolbar替代ActionBar的话,最方便的方式肯定是将Toolbar的布局提取出来然后在不同的Activity中直接include,像下面这样:

Android Secret Code

我们很多人应该都做过这样的操作,打开拨号键盘输入*#*#4636#*#*等字符就会弹出一个界面显示手机相关的一些信息,这个功能在Android中被称为android secret code,除了这些系统预置的secret code,我们也可以实现自己的secret code,而且实现起来非常简单。

ClickableSpan(URLSpan)的长按处理

给TextView设置了OnLongClickListener后,如果TextView中同时有ClickableSpan(一般为URLSpan),此时长按TextView,如果长按的位置在ClickableSpan上,会发现同时触发了OnLongClickListener和ClickableSpan的onClick。比如下面的代码

Convert View To Bitmap

1
2
3
4
5
6
7
8
public static Bitmap convertViewToBitmap(View view) {
view.destroyDrawingCache();
view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.setDrawingCacheEnabled(true);
return view.getDrawingCache(true);
}

end

《暗时间》

暗时间

暗时间

如果你有一台计算机,你装了一个系统之后就整天把它搁置在那里,你觉得这台计算机被实际使用了吗?没有。因为CPU整天运行的就是空闲进程,运行空闲进程也是一天,运行大数据量计算的程序也是一天,对于CPU来说同样的一天,价值却是完全不一样的。对人也是一样。

《影响力》

影响力的武器

火鸡照顾孩子的方式是,当小火鸡发出“吱吱”的叫声时火鸡就会去照顾小火鸡,而如果小火鸡不发出这种叫声,火鸡可能对其不管不顾。黄鼠狼是火鸡的天敌,但是如果把用录音机把小火鸡的叫声录制下来并放到黄鼠狼的身上播放,火鸡就会去照顾黄鼠狼。火鸡照顾孩子的方式就是机械式的听声音。

《如何阅读一本书》读书笔记

前言

这些年读了不少书,但结果也仅仅是“读”过而已,仅仅是说我读过什么什么书,但却没吸收书中的内容,读的时候感觉很有意思很有道理,但过一段时间就全忘了,包括现在说的《如何阅读一本书》,几年前就开始看这本书,但几次翻看一小部分后放弃,而所看的是什么却没什么印象了,这次算是把这本书看完了,不过怎么说呢,只能说是看完了,比以前强点,至少还有现在的这个笔记,但远达不到书中分析阅读的要求。很多时候就是这样,读书的目的仅仅是”翻完”这本书而已,只想快点看完,像完成任务一样,而不是说能理解接收多少。就暂且先记录一下吧,还有以前看过的那些书,看能不能找时间再看一下。

Java垃圾回收

垃圾收集算法

引用计数

堆中的每个对象都有一个引用计数,当对象被引用时引用计数加1,当对象的引用被重新赋值或超出有效区域时引用计数减1,当一个对象被回收后,它所引用的对象的引用计算减1。当一个对象的引用计数变为0时就被回收。