Fresco使用

Fresco是一款高效的图片加载及缓存库,支持三级缓存机制,利用Ashmen堆管理内存,有效节省资源。本文介绍如何在Android项目中集成Fresco,并通过实例展示其基本使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Fresco是一个强大的图片加载缓存控件,具有三级缓存(2级内存,1级文件)来加载图片,节省空间和CPU时间。

Fresco使用Ashmen堆来分配内存:Android有另外一种内存区域,叫做Ashmem。它操作起来更像Native堆,但是也有额外的系统调用。Android 在操作 Ashmem 堆时,会把该堆中存有数据的内存区域从 Ashmem 堆中抽取出来,而不是把它释放掉,这是一种弱内存释放模式;被抽取出来的这部分内存只有当系统真正需要更多的内存时(系统内存不够用)才会被释放。当 Android 把被抽取出来的这部分内存放回 Ashmem 堆,只要被抽取的内存空间没有被释放,之前的数据就会恢复到相应的位置。

在移动设备上显示图片需要很多的步骤:

几个优秀的开源库都是按照这个顺序执行的,比如 Picasso,Universal Image Loader,Glide和 Volley等等。上面这些开源库为Android的发展做出了非常重要的贡献。我们相信Fresco在几个重要方面会表现的更好。

①加入依赖

dependencies {

  compile 'com.facebook.fresco:fresco:0.9.0+'

}

②在 Application 初始化时,在应用调用 setContentView() 之前,进行初始化:

Fresco.initialize(context);

public class  MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }

}

 

③在布局中加入SimpleDraweeView来代替ImageView使用

<com.facebook.drawee.view.SimpleDraweeView

    android:id="@+id/my_image_view"

    android:layout_width="20dp"

    android:layout_height="20dp"

    fresco:placeholderImage="@drawable/my_drawable"

  />

④开始加载图片

Uri uri = Uri.parse("https://raw.githubusercontent.com/facebook/fresco/gh-pages/static/fresco-logo.png");

SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);

draweeView.setImageURI(uri);

剩下的,Fresco会替你完成:

· 显示占位图直到加载完成;

· 下载图片;

· 缓存图片;

图片不再显示时,从内存中移除;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值