package com.example.administrator.searchpicturetool.config; import android.app.ActivityManager; import android.os.Build; import com.facebook.common.internal.Supplier; import com.facebook.common.util.ByteConstants; import com.facebook.imagepipeline.cache.MemoryCacheParams; /** * Created by WenHuaijun on 2016/9/22 0022. */ public class MemoryCacheSupplier implements Supplier { private ActivityManager activityManager; public MemoryCacheSupplier(ActivityManager activityManager) { this.activityManager = activityManager; } @Override public MemoryCacheParams get() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { return new MemoryCacheParams(getMaxCacheSize(), 56, Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE); } else { return new MemoryCacheParams( getMaxCacheSize(), 256, Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE); } } private int getMaxCacheSize() { final int maxMemory = Math.min(activityManager.getMemoryClass() * ByteConstants.MB, Integer.MAX_VALUE); if (maxMemory < 32 * ByteConstants.MB) { return 4 * ByteConstants.MB; } else if (maxMemory < 64 * ByteConstants.MB) { return 6 * ByteConstants.MB; } else { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD) { return 8 * ByteConstants.MB; } else { return maxMemory / 4; } } } }