美文网首页
Fresco知识点笔记02-RequestLoggingList

Fresco知识点笔记02-RequestLoggingList

作者: Android技术研究 | 来源:发表于2016-07-13 13:43 被阅读255次

    本章主要分析的是RequestLoggingListener类实现过程中用到的知识点,以下代码和图文是相关继承结构。
    <pre>
    1、public class RequestLoggingListener implements RequestListener
    2、public interface RequestListener extends ProducerListener
    3、public interface ProducerListener
    </pre>

    接口继承接口.png

    RequestLoggingListener类相关知识点分析

    <pre>
    @GuardedBy("this")
    private final Map<Pair<String, String>, Long> mProducerStartTimeMap;
    @GuardedBy("this")
    private final Map<String, Long> mRequestStartTimeMap;

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

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

    知识点@GuardedBy("this")

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

    知识点Pair

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

    <pre>
    @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();
    }
    </pre>

    知识点System.currentTimeMillis()

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

    相关文章

      网友评论

          本文标题:Fresco知识点笔记02-RequestLoggingList

          本文链接:https://www.haomeiwen.com/subject/zkljjttx.html