title: Fresco的初步使用
date: 2016-03-15 17:06:32
tags: 开源框架的使用
Fresco 清理图片缓存 :
ImagePipeline imagePipeline = Fresco.getImagePipeline();
//清空内存缓存(包括Bitmap缓存和未解码图片的缓存)
imagePipeline.clearMemoryCaches();
//清空硬盘缓存,一般在设置界面供用户手动清理
imagePipeline.clearDiskCaches();
//同时清理内存缓存和硬盘缓存
imagePipeline.clearCaches();
//清理特定某张图片缓存
imagePipeline.evictFromCache(uri)
Fresco遇到的问题
1、Fresco使用的时候会产生’x86’, ‘x86_64’, ‘armeabi-v7a’, ‘armeabi’文件,里面都是兼容各个系统的兼容.so文件。如果有些不需要可以在gradle中使用
//删掉不必要的so文件
splits {
abi {
enable true
reset()
include 'armeabi'
universalApk false
}
}
来保留特定的文件夹,删除其他的。
Android Studio, gradle and NDK integration
当你项目中有so文件的时候,如果没有针对64位的手机做适配那么该so文件是不会被调用到,因为Fresco中会生成一个arm64-v8a这种64位的目录,那么系统就会只去找寻这个目录下的so,这样就会报错
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.pba.cosmetics-2base.apk"],nativeLibraryDirectories=[/data/app/com.pba.cosmetics-2/lib/arm64, /vendor/lib64, /system/lib64]]] co
2、Fresco的SimpleDraweeView 可能再有写控件中不兼容,如ViewFlipper 中的进出动画。这样的话可以给SimpleDraweeView 添加个父控件可以解决这个问题。
3、Fresco是放在mavenCentral()中的,所以在使用的时候需要添加
allprojects {
repositories {
jcenter()
mavenCentral()
}
}