use of com.facebook.imagepipeline.cache.MemoryCacheParams in project DevRing by LJYcoder.
the class FrescoManager method init.
@Override
public void init(Context context, final ImageConfig imageConfig) {
mContext = context;
mImageConfig = imageConfig;
// 配置管理者
ImagePipelineConfig.Builder imagePipelineConfigBuilder = ImagePipelineConfig.newBuilder(context);
// 配置内存缓存(已解码部分的缓存)
if (imageConfig.getMemoryCacheSize() > 0) {
imagePipelineConfigBuilder.setBitmapMemoryCacheParamsSupplier(new Supplier<MemoryCacheParams>() {
public MemoryCacheParams get() {
MemoryCacheParams bitmapCacheParams = new //
MemoryCacheParams(// 可用最大内存数,以字节为单位
imageConfig.getMemoryCacheSize(), // 内存中允许的最多图片数量
Integer.MAX_VALUE, // 内存中准备清理但是尚未删除的总图片所可用的最大内存数,以字节为单位
imageConfig.getMemoryCacheSize(), // 内存中准备清除的图片最大数量
Integer.MAX_VALUE, // 内存中单图片的最大大小
Integer.MAX_VALUE);
return bitmapCacheParams;
}
});
}
// 配置磁盘缓存
if (imageConfig.getDiskCacheFile() != null) {
DiskCacheConfig.Builder diakBuilder = DiskCacheConfig.newBuilder(context);
// 磁盘缓存目录路径
diakBuilder.setBaseDirectoryPath(imageConfig.getDiskCacheFile().getParentFile());
// 磁盘缓存目录名
diakBuilder.setBaseDirectoryName(imageConfig.getDiskCacheFile().getName());
// 磁盘缓存大小
if (imageConfig.getDiskCacheSize() > 0)
diakBuilder.setMaxCacheSize(imageConfig.getDiskCacheSize());
imagePipelineConfigBuilder.setMainDiskCacheConfig(diakBuilder.build());
} else if (imageConfig.isDiskCacheExternal()) {
DiskCacheConfig.Builder diakBuilder = DiskCacheConfig.newBuilder(context);
// 磁盘缓存目录路径
diakBuilder.setBaseDirectoryPath(context.getExternalCacheDir());
// 磁盘缓存目录名
diakBuilder.setBaseDirectoryName("fresco_image_cache");
// 磁盘缓存大小
if (imageConfig.getDiskCacheSize() > 0)
diakBuilder.setMaxCacheSize(imageConfig.getDiskCacheSize());
imagePipelineConfigBuilder.setMainDiskCacheConfig(diakBuilder.build());
}
if (imageConfig.isUseOkhttp())
imagePipelineConfigBuilder.setNetworkFetcher(new OkHttpNetworkFetcher(DevRing.ringComponent().okHttpClient()));
// 当内存紧张时采取的措施
MemoryTrimmableRegistry memoryTrimmableRegistry = NoOpMemoryTrimmableRegistry.getInstance();
memoryTrimmableRegistry.registerMemoryTrimmable(new MemoryTrimmable() {
@Override
public void trim(MemoryTrimType trimType) {
final double suggestedTrimRatio = trimType.getSuggestedTrimRatio();
RingLog.e(String.format("onCreate suggestedTrimRatio : %f", suggestedTrimRatio));
if (MemoryTrimType.OnCloseToDalvikHeapLimit.getSuggestedTrimRatio() == suggestedTrimRatio || MemoryTrimType.OnSystemLowMemoryWhileAppInBackground.getSuggestedTrimRatio() == suggestedTrimRatio || MemoryTrimType.OnSystemLowMemoryWhileAppInForeground.getSuggestedTrimRatio() == suggestedTrimRatio) {
ImagePipelineFactory.getInstance().getImagePipeline().clearMemoryCaches();
}
}
});
imagePipelineConfigBuilder.setMemoryTrimmableRegistry(memoryTrimmableRegistry);
/**
* 在图片解码时根据ResizeOptions所设的宽高的像素进行解码,这样解码出来可以得到一个更小的Bitmap。
* 必须和ImageRequest的ResizeOptions一起使用,ResizeOptions和DownsampleEnabled参数都不影响原图片的大小,影响的是EncodeImage的大小,
* 进而影响Decode出来的Bitmap的大小,ResizeOptions须和此参数结合使用,
* 是因为单独使用ResizeOptions的话只支持JPEG图,所以需支持png、jpg、webp需要先设置此参数。
*/
imagePipelineConfigBuilder.setDownsampleEnabled(true);
// 配置渐进式显示(使用默认效果),仅支持文件类型为JPEG的网络图片
imagePipelineConfigBuilder.setProgressiveJpegConfig(new SimpleProgressiveJpegConfig());
// 设置调试时,显示图片加载的Log
FLog.setMinimumLoggingLevel(FLog.VERBOSE);
Set<RequestListener> requestListeners = new HashSet<>();
requestListeners.add(new RequestLoggingListener());
imagePipelineConfigBuilder.setRequestListeners(requestListeners);
// 进行初始化
Fresco.initialize(context, imagePipelineConfigBuilder.build());
}
use of com.facebook.imagepipeline.cache.MemoryCacheParams in project remusic by aa112901.
the class MainApplication method getConfigureCaches.
private ImagePipelineConfig getConfigureCaches(Context context) {
final MemoryCacheParams bitmapCacheParams = new MemoryCacheParams(// 内存缓存中总图片的最大大小,以字节为单位。
MAX_MEM, // 内存缓存中图片的最大数量。
Integer.MAX_VALUE, // 内存缓存中准备清除但尚未被删除的总图片的最大大小,以字节为单位。
MAX_MEM, // 内存缓存中准备清除的总图片的最大数量。
Integer.MAX_VALUE, // 内存缓存中单个图片的最大大小。
Integer.MAX_VALUE / 10);
Supplier<MemoryCacheParams> mSupplierMemoryCacheParams = new Supplier<MemoryCacheParams>() {
@Override
public MemoryCacheParams get() {
return bitmapCacheParams;
}
};
ImagePipelineConfig.Builder builder = ImagePipelineConfig.newBuilder(context).setDownsampleEnabled(true);
builder.setBitmapMemoryCacheParamsSupplier(mSupplierMemoryCacheParams);
// 小图片的磁盘配置
DiskCacheConfig diskSmallCacheConfig = DiskCacheConfig.newBuilder(context).setBaseDirectoryPath(// 缓存图片基路径
context.getApplicationContext().getCacheDir()).build();
// 默认图片的磁盘配置
DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder(context).setBaseDirectoryPath(// 缓存图片基路径
Environment.getExternalStorageDirectory().getAbsoluteFile()).build();
// 缓存图片配置
ImagePipelineConfig.Builder configBuilder = ImagePipelineConfig.newBuilder(context).setBitmapMemoryCacheParamsSupplier(// 内存缓存配置(一级缓存,已解码的图片)
mSupplierMemoryCacheParams).setMainDiskCacheConfig(// 磁盘缓存配置(总,三级缓存)
diskCacheConfig);
return builder.build();
}
use of com.facebook.imagepipeline.cache.MemoryCacheParams in project fresco by facebook.
the class ImagePipelineConfigFactory method configureCaches.
/**
* Configures disk and memory cache not to exceed common limits
*/
private static void configureCaches(ImagePipelineConfig.Builder configBuilder, Context context) {
final MemoryCacheParams bitmapCacheParams = new MemoryCacheParams(// Max total size of elements in the cache
ConfigConstants.MAX_MEMORY_CACHE_SIZE, // Max entries in the cache
Integer.MAX_VALUE, // Max total size of elements in eviction queue
ConfigConstants.MAX_MEMORY_CACHE_SIZE, // Max length of eviction queue
Integer.MAX_VALUE, // Max cache entry size
Integer.MAX_VALUE, // Interval for checking cache parameters
TimeUnit.MINUTES.toMillis(5));
configBuilder.setBitmapMemoryCacheParamsSupplier(new Supplier<MemoryCacheParams>() {
public MemoryCacheParams get() {
return bitmapCacheParams;
}
}).setMainDiskCacheConfig(DiskCacheConfig.newBuilder(context).setBaseDirectoryPath(context.getApplicationContext().getCacheDir()).setBaseDirectoryName(IMAGE_PIPELINE_CACHE_DIR).setMaxCacheSize(ConfigConstants.MAX_DISK_CACHE_SIZE).build());
}
use of com.facebook.imagepipeline.cache.MemoryCacheParams in project teaTime by ancfdy.
the class FrescoUtils method configureCaches.
/**
* 初始化配置
* @param context
* @return
*/
private static ImagePipelineConfig configureCaches(Context context) {
// 内存配置
final MemoryCacheParams bitmapCacheParams = new MemoryCacheParams(// 内存缓存中总图片的最大大小,以字节为单位。
FrescoUtils.MAX_MEMORY_CACHE_SIZE, // 内存缓存中图片的最大数量。
Integer.MAX_VALUE, // 内存缓存中准备清除但尚未被删除的总图片的最大大小,以字节为单位。
FrescoUtils.MAX_MEMORY_CACHE_SIZE, // 内存缓存中准备清除的总图片的最大数量。
Integer.MAX_VALUE, // 内存缓存中单个图片的最大大小。
Integer.MAX_VALUE);
// 修改内存图片缓存数量,空间策略(这个方式有点恶心)
Supplier<MemoryCacheParams> mSupplierMemoryCacheParams = new Supplier<MemoryCacheParams>() {
@Override
public MemoryCacheParams get() {
return bitmapCacheParams;
}
};
// 小图片的磁盘配置
DiskCacheConfig diskSmallCacheConfig = DiskCacheConfig.newBuilder(context).setBaseDirectoryPath(// 缓存图片基路径
context.getApplicationContext().getCacheDir()).setBaseDirectoryName(// 文件夹名
IMAGE_PIPELINE_SMALL_CACHE_DIR).setMaxCacheSize(// 默认缓存的最大大小。
FrescoUtils.MAX_DISK_CACHE_SIZE).setMaxCacheSizeOnLowDiskSpace(// 缓存的最大大小,使用设备时低磁盘空间。
MAX_SMALL_DISK_LOW_CACHE_SIZE).setMaxCacheSizeOnVeryLowDiskSpace(// 缓存的最大大小,当设备极低磁盘空间
MAX_SMALL_DISK_VERYLOW_CACHE_SIZE).build();
// 默认图片的磁盘配置
DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder(context).setBaseDirectoryPath(// 缓存图片基路径
Environment.getExternalStorageDirectory().getAbsoluteFile()).setBaseDirectoryName(// 文件夹名
IMAGE_PIPELINE_CACHE_DIR).setMaxCacheSize(// 默认缓存的最大大小。
FrescoUtils.MAX_DISK_CACHE_SIZE).setMaxCacheSizeOnLowDiskSpace(// 缓存的最大大小,使用设备时低磁盘空间。
MAX_DISK_CACHE_LOW_SIZE).setMaxCacheSizeOnVeryLowDiskSpace(// 缓存的最大大小,当设备极低磁盘空间
MAX_DISK_CACHE_VERYLOW_SIZE).build();
// 缓存图片配置
ImagePipelineConfig.Builder configBuilder = ImagePipelineConfig.newBuilder(context).setBitmapMemoryCacheParamsSupplier(// 内存缓存配置(一级缓存,已解码的图片)
mSupplierMemoryCacheParams).setMainDiskCacheConfig(// 磁盘缓存配置(总,三级缓存)
diskCacheConfig).setSmallImageDiskCacheConfig(// 磁盘缓存配置(小图片,可选~三级缓存的小图优化缓存)
diskSmallCacheConfig);
return configBuilder.build();
}
use of com.facebook.imagepipeline.cache.MemoryCacheParams in project teaTime by ancfdy.
the class FrescoUtils method configureCaches.
/**
* 初始化配置
* @param context
* @return
*/
private static ImagePipelineConfig configureCaches(Context context) {
// 内存配置
final MemoryCacheParams bitmapCacheParams = new MemoryCacheParams(// 内存缓存中总图片的最大大小,以字节为单位。
FrescoUtils.MAX_MEMORY_CACHE_SIZE, // 内存缓存中图片的最大数量。
Integer.MAX_VALUE, // 内存缓存中准备清除但尚未被删除的总图片的最大大小,以字节为单位。
FrescoUtils.MAX_MEMORY_CACHE_SIZE, // 内存缓存中准备清除的总图片的最大数量。
Integer.MAX_VALUE, // 内存缓存中单个图片的最大大小。
Integer.MAX_VALUE);
// 修改内存图片缓存数量,空间策略(这个方式有点恶心)
Supplier<MemoryCacheParams> mSupplierMemoryCacheParams = new Supplier<MemoryCacheParams>() {
@Override
public MemoryCacheParams get() {
return bitmapCacheParams;
}
};
// 小图片的磁盘配置
DiskCacheConfig diskSmallCacheConfig = DiskCacheConfig.newBuilder(context).setBaseDirectoryPath(// 缓存图片基路径
context.getApplicationContext().getCacheDir()).setBaseDirectoryName(// 文件夹名
IMAGE_PIPELINE_SMALL_CACHE_DIR).setMaxCacheSize(// 默认缓存的最大大小。
FrescoUtils.MAX_DISK_CACHE_SIZE).setMaxCacheSizeOnLowDiskSpace(// 缓存的最大大小,使用设备时低磁盘空间。
MAX_SMALL_DISK_LOW_CACHE_SIZE).setMaxCacheSizeOnVeryLowDiskSpace(// 缓存的最大大小,当设备极低磁盘空间
MAX_SMALL_DISK_VERYLOW_CACHE_SIZE).build();
// 默认图片的磁盘配置
DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder(context).setBaseDirectoryPath(// 缓存图片基路径
Environment.getExternalStorageDirectory().getAbsoluteFile()).setBaseDirectoryName(// 文件夹名
IMAGE_PIPELINE_CACHE_DIR).setMaxCacheSize(// 默认缓存的最大大小。
FrescoUtils.MAX_DISK_CACHE_SIZE).setMaxCacheSizeOnLowDiskSpace(// 缓存的最大大小,使用设备时低磁盘空间。
MAX_DISK_CACHE_LOW_SIZE).setMaxCacheSizeOnVeryLowDiskSpace(// 缓存的最大大小,当设备极低磁盘空间
MAX_DISK_CACHE_VERYLOW_SIZE).build();
// 缓存图片配置
ImagePipelineConfig.Builder configBuilder = ImagePipelineConfig.newBuilder(context).setBitmapMemoryCacheParamsSupplier(// 内存缓存配置(一级缓存,已解码的图片)
mSupplierMemoryCacheParams).setMainDiskCacheConfig(// 磁盘缓存配置(总,三级缓存)
diskCacheConfig).setSmallImageDiskCacheConfig(// 磁盘缓存配置(小图片,可选~三级缓存的小图优化缓存)
diskSmallCacheConfig);
return configBuilder.build();
}
Aggregations