Fresco源码解析: 初始化过程(一)

简介

以下是官网对fresco的定义:
fresco是一款功能强大的图片加载工具,使用它之后,你不必再去关心图片的加载和显示这些繁琐的事情!支持Android2.1及以后的版本。
中文官网地址如下:https://www.fresco-cn.org/,代码下载地址:git clone https://github.com/facebook/fresco.git

特性

内存管理

在5.0以下系统,Fresco将图片放到一个特别的内存区域。当然,在图片不显示的时候,占用的内存会自动被释放。这会使得APP更加流畅,减少因图片内存占用而引发的OOM。

图片加载

支持WebP解码,即使在早先对WebP支持不完善的Android系统上也能正常使用!

图片的渐进式呈现

Android 本身的图片库不支持此格式,但是Fresco支持。使用时,和往常一样,仅仅需要提供一个图片的URI即可,剩下的事情,Fresco会处理。

动图加载

加载Gif图和WebP动图在任何一个Android开发者眼里看来都是一件非常头疼的事情。每一帧都是一张很大的Bitmap,每一个动画都有很多帧。Fresco让你没有这些烦恼,它处理好每一帧并管理好你的内存。

以上是copy官网的内容。好,废话不多讲,下面开始源码解析。这篇博客主要讲Fresco的初始化,在后面的博客中随着本人的研究,会慢慢深入。

Fresco的初始化

官网的示例代码如下

public class MyApplication extends Application {
   
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}

所以就从Fresco.initialize(this)开始看,Fresco的java文件路径如下:

fresco\drawee-backends\drawee-pipeline\src\main\java\com\facebook\drawee\backends\pipeline\Fresco.java

initialize方法的代码如下:

  public static void initialize(Context context) {
    initialize(context, null, null);
  }

可以看到最终是调用了

public static void initialize(Context context,@Nullable ImagePipelineConfigimagePipelineConfig,
@Nullable DraweeConfig draweeConfig)
public static void initialize(
      Context context,
      @Nullable ImagePipelineConfig imagePipelineConfig,
      @Nullable DraweeConfig draweeConfig) {
    if (sIsInitialized) {
      FLog.w(
          TAG,
          "Fresco has already been initialized! `Fresco.initialize(...)` should only be called " +
            "1 single time to avoid memory leaks!");
    } else {
      sIsInitialized = true;
    }
    // we should always use the application context to avoid memory leaks
    context =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值