Fresco知识点笔记02-RequestLoggingListener分析

本章主要分析的是RequestLoggingListener类实现过程中用到的知识点,以下代码和图文是相关继承结构。


1、public class RequestLoggingListener implements RequestListener
2、public interface RequestListener extends ProducerListener
3、public interface ProducerListener

Fresco知识点笔记02-RequestLoggingListener分析_第1张图片
接口继承接口.png

RequestLoggingListener类相关知识点分析


@GuardedBy("this")
private final Map, Long> mProducerStartTimeMap;
@GuardedBy("this")
private final Map mRequestStartTimeMap;

//......省略部分.......

@Override
public synchronized void onRequestStart(
ImageRequest request,
Object callerContextObject,
String requestId,
boolean isPrefetch) {
//使用@GuardedBy("this")修饰的变量
mRequestStartTimeMap.put(requestId, getTime());
}
}

知识点@GuardedBy("this")

@GuardedBy("this")标记的对象受当前对象保护,在方法中使用被GuardedBy标记的变量的时候,当前方法要用synchronized修饰,这个synchronized删掉后编译器也不会报错,GuardedBy主要是给后期开发维护人员看的,让人知道这是一个并发访问的变量,不要随便修改,比如删除synchronized。

知识点Pair

Pair是android中内部提供的一个泛型对象,可以创建一个两个属性相同或者不同的对象到Pair中。


@Override
public synchronized void onRequestCancellation(String requestId) {
if (FLog.isLoggable(FLog.VERBOSE)) {
Long startTime = mRequestStartTimeMap.remove(requestId);
long currentTime = getTime();
...省略代码...
}
}
//获取间隔事件
private static long getElapsedTime(@Nullable Long startTime, long endTime) {
if (startTime != null) {
return endTime - startTime;
}
return -1;
}

//获取当前时间
private static long getTime() {
return SystemClock.uptimeMillis();
}

知识点System.currentTimeMillis()

System.currentTimeMillis()也可以获取当前时间,但是这个时间可以修改;SystemClock.uptimeMillis()表示系统开机到当前的时间总数,单位是毫秒,但是,当系统进入深度睡眠(CPU休眠、屏幕休眠、设备等待外部输入)时间就会停止,但是不会受到时钟缩放、空闲或者其他节能机制的影响。

你可能感兴趣的:(Fresco知识点笔记02-RequestLoggingListener分析)