Java 类com.facebook.common.util.ByteConstants 实例源码

项目:GitHub    文件:AnimatedFrameCacheTest.java   
@Before
public void setUp() {
  MockitoAnnotations.initMocks(this);
  MemoryCacheParams params = new MemoryCacheParams(
      4 * ByteConstants.MB,
      256,
      Integer.MAX_VALUE,
      Integer.MAX_VALUE,
      Integer.MAX_VALUE);
  when(mMemoryCacheParamsSupplier.get()).thenReturn(params);
  CountingMemoryCache<CacheKey, CloseableImage> countingMemoryCache =
      BitmapCountingMemoryCacheFactory.get(
          mMemoryCacheParamsSupplier,
          mMemoryTrimmableRegistry,
          mPlatformBitmapFactory,
          true);
  mCacheKey = new SimpleCacheKey("key");
  mAnimatedFrameCache = new AnimatedFrameCache(mCacheKey, countingMemoryCache);
  mFrame1 = CloseableReference.of(mock(CloseableImage.class));
  mFrame2 = CloseableReference.of(mock(CloseableImage.class));
}
项目:GitHub    文件:DefaultNativeMemoryChunkPoolParams.java   
public static PoolParams get() {
  SparseIntArray DEFAULT_BUCKETS = new SparseIntArray();
  DEFAULT_BUCKETS.put(1 * ByteConstants.KB, SMALL_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(2 * ByteConstants.KB, SMALL_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(4 * ByteConstants.KB, SMALL_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(8 * ByteConstants.KB, SMALL_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(16 * ByteConstants.KB, SMALL_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(32 * ByteConstants.KB, SMALL_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(64 * ByteConstants.KB, SMALL_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(128 * ByteConstants.KB, SMALL_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(256 * ByteConstants.KB, LARGE_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(512 * ByteConstants.KB, LARGE_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(1024 * ByteConstants.KB, LARGE_BUCKET_LENGTH);
  return new PoolParams(
      getMaxSizeSoftCap(),
      getMaxSizeHardCap(),
      DEFAULT_BUCKETS);
}
项目:GitHub    文件:DefaultBitmapMemoryCacheParamsSupplier.java   
private int getMaxCacheSize() {
  final int maxMemory =
      Math.min(mActivityManager.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 {
    // We don't want to use more ashmem on Gingerbread for now, since it doesn't respond well to
    // native memory pressure (doesn't throw exceptions, crashes app, crashes phone)
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
      return 8 * ByteConstants.MB;
    } else {
      return maxMemory / 4;
    }
  }
}
项目:richeditor    文件:AppManager.java   
private void FrescoInit() {
    DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder(this)
            .setMaxCacheSize(40 * ByteConstants.MB)
            .setBaseDirectoryPathSupplier(new Supplier<File>() {
                @Override
                public File get() {
                    return getCacheDir();
                }
            })
            .build();

    final FrescoCacheParams bitmapCacheParams = new FrescoCacheParams(activityManager);
    //Set<RequestListener> listeners = new HashSet<>();
    ImagePipelineConfig imagePipelineConfig = OkHttpImagePipelineConfigFactory.newBuilder(this, RetrofitClient.getInstance().getOkHttpClient())
            .setMainDiskCacheConfig(diskCacheConfig)
            .setBitmapMemoryCacheParamsSupplier(bitmapCacheParams)
            .setDownsampleEnabled(true)
            .build();
    Fresco.initialize(this, imagePipelineConfig);
}
项目:FrescoCustomCacheKey    文件:LJBitmapMemoryCacheSupplier.java   
private int getMaxCacheSize() {
    final int maxMemory = Math.min(mActivityManager.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 {
        // We don't want to use more ashmem on Gingerbread for now, since it doesn't respond well to
        // native memory pressure (doesn't throw exceptions, crashes app, crashes phone)
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
            return 8 * ByteConstants.MB;
        } else {
            return maxMemory / 4;
        }
    }
}
项目:APlayer    文件:APlayerApplication.java   
private void initUtil() {
    //初始化工具类
    DBManager.initialInstance(new DBOpenHelper(mContext));
    PermissionUtil.setContext(mContext);
    MediaStoreUtil.setContext(mContext);
    Util.setContext(mContext);
    ImageUriUtil.setContext(mContext);
    DiskCache.init(mContext);
    ColorUtil.setContext(mContext);
    PlayListUtil.setContext(mContext);
    final int cacheSize = (int)(Runtime.getRuntime().maxMemory() / 8);
    ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
            .setBitmapMemoryCacheParamsSupplier(() -> new MemoryCacheParams(cacheSize, Integer.MAX_VALUE,cacheSize,Integer.MAX_VALUE, 2 * ByteConstants.MB))
            .setBitmapsConfig(Bitmap.Config.RGB_565)
            .setDownsampleEnabled(true)
            .build();
    Fresco.initialize(this,config);
}
项目:fresco    文件:AnimatedFrameCacheTest.java   
@Before
public void setUp() {
  MockitoAnnotations.initMocks(this);
  MemoryCacheParams params = new MemoryCacheParams(
      4 * ByteConstants.MB,
      256,
      Integer.MAX_VALUE,
      Integer.MAX_VALUE,
      Integer.MAX_VALUE);
  when(mMemoryCacheParamsSupplier.get()).thenReturn(params);
  CountingMemoryCache<CacheKey, CloseableImage> countingMemoryCache =
      BitmapCountingMemoryCacheFactory.get(
          mMemoryCacheParamsSupplier,
          mMemoryTrimmableRegistry,
          mPlatformBitmapFactory,
          true);
  mCacheKey = new SimpleCacheKey("key");
  mAnimatedFrameCache = new AnimatedFrameCache(mCacheKey, countingMemoryCache);
  mFrame1 = CloseableReference.of(mock(CloseableImage.class));
  mFrame2 = CloseableReference.of(mock(CloseableImage.class));
}
项目:fresco    文件:DefaultNativeMemoryChunkPoolParams.java   
public static PoolParams get() {
  SparseIntArray DEFAULT_BUCKETS = new SparseIntArray();
  DEFAULT_BUCKETS.put(1 * ByteConstants.KB, SMALL_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(2 * ByteConstants.KB, SMALL_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(4 * ByteConstants.KB, SMALL_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(8 * ByteConstants.KB, SMALL_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(16 * ByteConstants.KB, SMALL_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(32 * ByteConstants.KB, SMALL_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(64 * ByteConstants.KB, SMALL_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(128 * ByteConstants.KB, SMALL_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(256 * ByteConstants.KB, LARGE_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(512 * ByteConstants.KB, LARGE_BUCKET_LENGTH);
  DEFAULT_BUCKETS.put(1024 * ByteConstants.KB, LARGE_BUCKET_LENGTH);
  return new PoolParams(
      getMaxSizeSoftCap(),
      getMaxSizeHardCap(),
      DEFAULT_BUCKETS);
}
项目:fresco    文件:DefaultBitmapMemoryCacheParamsSupplier.java   
private int getMaxCacheSize() {
  final int maxMemory =
      Math.min(mActivityManager.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 {
    // We don't want to use more ashmem on Gingerbread for now, since it doesn't respond well to
    // native memory pressure (doesn't throw exceptions, crashes app, crashes phone)
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
      return 8 * ByteConstants.MB;
    } else {
      return maxMemory / 4;
    }
  }
}
项目:GitHub    文件:DefaultNativeMemoryChunkPoolParams.java   
/**
 * {@link NativeMemoryChunkPool} manages memory on the native heap, so we don't need as strict
 * caps as we would if we were on the Dalvik heap. However, since native memory OOMs are
 * significantly more problematic than Dalvik OOMs, we would like to stay conservative.
 */
private static int getMaxSizeSoftCap() {
  final int maxMemory = (int)Math.min(Runtime.getRuntime().maxMemory(), Integer.MAX_VALUE);
  if (maxMemory < 16 * ByteConstants.MB) {
    return 3 * ByteConstants.MB;
  } else if (maxMemory < 32 * ByteConstants.MB) {
    return 6 * ByteConstants.MB;
  } else {
    return 12 * ByteConstants.MB;
  }
}
项目:GitHub    文件:DefaultNativeMemoryChunkPoolParams.java   
/**
 * We need a smaller cap for devices with less then 16 MB so that we don't run the risk of
 * evicting other processes from the native heap.
 */
private static int getMaxSizeHardCap() {
  final int maxMemory = (int) Math.min(Runtime.getRuntime().maxMemory(), Integer.MAX_VALUE);
  if (maxMemory < 16 * ByteConstants.MB) {
    return maxMemory / 2;
  } else {
    return maxMemory / 4 * 3;
  }
}
项目:GitHub    文件:DefaultBitmapPoolParams.java   
/**
 * Our Bitmaps live in ashmem, meaning that they are pinned in androids' shared native memory.
 * Therefore, we are not constrained by the max heap size of the dalvik heap, but we want to make
 * sure we don't use too much memory on low end devices, so that we don't force other background
 * process to be evicted.
 */
private static int getMaxSizeHardCap() {
  final int maxMemory = (int)Math.min(Runtime.getRuntime().maxMemory(), Integer.MAX_VALUE);
  if (maxMemory > 16 * ByteConstants.MB) {
    return maxMemory / 4 * 3;
  } else {
    return maxMemory / 2;
  }
}
项目:GitHub    文件:DefaultEncodedMemoryCacheParamsSupplier.java   
private int getMaxCacheSize() {
  final int maxMemory = (int) Math.min(Runtime.getRuntime().maxMemory(), Integer.MAX_VALUE);
  if (maxMemory < 16 * ByteConstants.MB) {
    return 1 * ByteConstants.MB;
  } else if (maxMemory < 32 * ByteConstants.MB) {
    return 2 * ByteConstants.MB;
  } else {
    return 4 * ByteConstants.MB;
  }
}
项目:CustomListView    文件:FrescoBitmapMemoryCacheSupplier.java   
private int getMaxCacheSize() {
    final int maxMemory =
            Math.min(mActivityManager.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 {
        return maxMemory / 5;
    }
}
项目:GongXianSheng    文件:FrecoFactory.java   
public void initFresco(){
    String sign = PreferencesHelper.getCookie();
    DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder(mContext)
            .setBaseDirectoryPath(mContext.getFilesDir())
            .setBaseDirectoryName("image_cache")
            .setMaxCacheSize(50 * ByteConstants.MB)
            .setMaxCacheSizeOnLowDiskSpace(10 * ByteConstants.MB)
            .setMaxCacheSizeOnVeryLowDiskSpace(2 * ByteConstants.MB)
            .build();
    ImagePipelineConfig config = ImagePipelineConfig.newBuilder(mContext)
            .setNetworkFetcher(new ElnImageDownloaderFetcher(sign,mContext))
            .setMainDiskCacheConfig(diskCacheConfig).build();
    Fresco.initialize(mContext, config);
}
项目:react-native-udesk    文件:UdeskSDKManager.java   
public void init(final Context context) {
    final int MAX_HEAP_SIZE = (int) Runtime.getRuntime().maxMemory();
    final int MAX_DISK_CACHE_SIZE = 300 * ByteConstants.MB;
    final int MAX_MEMORY_CACHE_SIZE = MAX_HEAP_SIZE / 3;
    final MemoryCacheParams bitmapCacheParams = new MemoryCacheParams(
            MAX_MEMORY_CACHE_SIZE,
            Integer.MAX_VALUE,
            MAX_MEMORY_CACHE_SIZE,
            Integer.MAX_VALUE,
            Integer.MAX_VALUE);

    DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder(context)
            .setMaxCacheSize(MAX_DISK_CACHE_SIZE)//最大缓存
            .setBaseDirectoryName("udesk")//子目录
            .setBaseDirectoryPathSupplier(new Supplier<File>() {
                @Override
                public File get() {
                    return UdeskUtil.getExternalCacheDir(context);
                }
            })
            .build();
    ImagePipelineConfig config = ImagePipelineConfig.newBuilder(context)
            .setBitmapMemoryCacheParamsSupplier(
                    new Supplier<MemoryCacheParams>() {
                        public MemoryCacheParams get() {
                            return bitmapCacheParams;
                        }
                    })
            .setMainDiskCacheConfig(diskCacheConfig)
            .setDownsampleEnabled(true)
            .setBitmapsConfig(Bitmap.Config.RGB_565)
            .build();

    Fresco.initialize(context, config);
}
项目:ModuleFrame    文件:MemoryCacheParamsSupplier.java   
private int getMaxCacheSize() {
    final int maxMemory = Math.min(mActivityManager.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 {
        return maxMemory / 5;
    }
}
项目:richeditor    文件:FrescoCacheParams.java   
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 {
        return maxMemory/4;
    }
}
项目:JianshuApp    文件:FrescoManager.java   
public static void init(Context context, File baseDirectoryPath) {
    ImagePipelineConfig.Builder imagePipelineConfigBuilder = ImagePipelineConfig.newBuilder(context)
            .setMainDiskCacheConfig(DiskCacheConfig.newBuilder(context)
                    .setBaseDirectoryPath(baseDirectoryPath)
                    .setBaseDirectoryName("original")
                    .build())
            .setDownsampleEnabled(true);
    ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    Supplier<MemoryCacheParams> memoryCacheParamsSupplier = new DefaultBitmapMemoryCacheParamsSupplier(activityManager) {
        @Override
        public MemoryCacheParams get() {
            int maxCacheEntries = 256;
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                maxCacheEntries = 64;
            }
            return new MemoryCacheParams(
                    getMaxCacheSize(),
                    maxCacheEntries,
                    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 {
                return maxMemory / 4;
            }
        }
    };
    imagePipelineConfigBuilder.setBitmapMemoryCacheParamsSupplier(memoryCacheParamsSupplier);
    Fresco.initialize(context, imagePipelineConfigBuilder.build());
}
项目:APlayer    文件:DiskCache.java   
public static void init(Context context){
    try {
        File lrcCacheDir = getDiskCacheDir(context, "lyric");
        if (!lrcCacheDir.exists())
            lrcCacheDir.mkdir();
        mLrcCache = DiskLruCache.open(lrcCacheDir, getAppVersion(context), 1, 10 * ByteConstants.MB);


    } catch (IOException e) {
        e.printStackTrace();
    }
}
项目:APlayer    文件:MediaStoreUtil.java   
public static List<Song> getAllSong(){
    ArrayList<Song> songs = new ArrayList<>();
    Cursor cursor = null;

    //默认过滤文件大小500K
    Constants.SCAN_SIZE = SPUtil.getValue(mContext,"Setting","ScanSize",-1);
    if( Constants.SCAN_SIZE < 0) {
        Constants.SCAN_SIZE = 500 * ByteConstants.KB;
        SPUtil.putValue(mContext,"Setting","ScanSize",500 * ByteConstants.KB);
    }
    try {
        cursor = mContext.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                null,
                MediaStore.Audio.Media.SIZE + ">" + Constants.SCAN_SIZE + getBaseSelection(),
                null,
                SongAdapter.SORT + SongAdapter.ASCDESC);
        if(cursor != null) {
            while (cursor.moveToNext()) {
                songs.add(getMP3Info(cursor));
            }
        }
    }catch (Exception e){
        e.printStackTrace();
    } finally {
        if(cursor != null && !cursor.isClosed())
            cursor.close();
    }
    return songs;
}
项目:APlayer    文件:MediaStoreUtil.java   
/**
 * 获得所有歌曲id
 * @return
 */
public static ArrayList<Integer> getAllSongsId() {
    ArrayList<Integer> allSongList = new ArrayList<>();
    ContentResolver resolver = mContext.getContentResolver();
    Cursor cursor = null;

    //默认过滤文件大小500K
    Constants.SCAN_SIZE = SPUtil.getValue(mContext,"Setting","ScanSize",-1);
    if( Constants.SCAN_SIZE < 0) {
        Constants.SCAN_SIZE = 500 * ByteConstants.KB;
        SPUtil.putValue(mContext,"Setting","ScanSize",500 * ByteConstants.KB);
    }
    try{
        cursor = resolver.query(
                MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                null,
                MediaStore.Audio.Media.SIZE + ">" + Constants.SCAN_SIZE + MediaStoreUtil.getBaseSelection(),
                null,
                SPUtil.getValue(mContext,"Setting","Sort",MediaStore.Audio.Media.DEFAULT_SORT_ORDER)
                        + SPUtil.getValue(mContext,"Setting","AscDesc"," asc"));
        if(cursor != null) {
            while (cursor.moveToNext()) {
                allSongList.add(cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media._ID)));
            }
        }
    } catch (Exception e){
        e.printStackTrace();
    } finally {
        if(cursor != null && !cursor.isClosed())
            cursor.close();
    }

    return allSongList;
}
项目:APlayer    文件:MediaStoreUtil.java   
/**
 * 获得文件夹信息
 * @return
 */
public static Map<String,List<Integer>> getFolder(){
    ContentResolver resolver = mContext.getContentResolver();
    Cursor cursor = null;
    Map<String,List<Integer>> folder = new TreeMap<>(String::compareToIgnoreCase);


    //默认过滤文件大小500K
    Constants.SCAN_SIZE = SPUtil.getValue(mContext,"Setting","ScanSize",-1);
    if( Constants.SCAN_SIZE < 0) {
        Constants.SCAN_SIZE = 500 * ByteConstants.KB;
        SPUtil.putValue(mContext,"Setting","ScanSize",500 * ByteConstants.KB);
    }

    try{
        cursor = resolver.query(
                MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                new String[]{MediaStore.Audio.Media._ID,MediaStore.Audio.Media.DATA},
                MediaStore.Audio.Media.SIZE + ">" + Constants.SCAN_SIZE + MediaStoreUtil.getBaseSelection(),
                null,
                null);
        if(cursor != null) {
            while (cursor.moveToNext()) {
                int id = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media._ID));
                //根据歌曲路径对歌曲按文件夹分类
                String path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
                sortFolder(folder,id,path);
            }
        }
    } catch (Exception e){
        e.printStackTrace();
    } finally {
        if(cursor != null && !cursor.isClosed())
            cursor.close();
    }

    return folder;
}
项目:APlayer    文件:MediaStoreUtil.java   
/**
 * 获得所有歌曲id 并按文件夹分类
 * @return
 */
public static ArrayList<Integer> getAllSongsIdWithFolder() {
    ArrayList<Integer> allSongList = new ArrayList<>();
    ContentResolver resolver = mContext.getContentResolver();
    Cursor cursor = null;

    //默认过滤文件大小500K
    Constants.SCAN_SIZE = SPUtil.getValue(mContext,"Setting","ScanSize",-1);
    if( Constants.SCAN_SIZE < 0) {
        Constants.SCAN_SIZE = 500 * ByteConstants.KB;
        SPUtil.putValue(mContext,"Setting","ScanSize",500 * ByteConstants.KB);
    }

    try{
        cursor = resolver.query(
                MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                new String[]{MediaStore.Audio.Media._ID,MediaStore.Audio.Media.DATA},
                MediaStore.Audio.Media.SIZE + ">" + Constants.SCAN_SIZE + MediaStoreUtil.getBaseSelection(),
                null,
                SPUtil.getValue(mContext,"Setting","Sort",MediaStore.Audio.Media.DEFAULT_SORT_ORDER)
                        + SPUtil.getValue(mContext,"Setting","AscDesc"," asc"));
        if(cursor != null) {
            Global.FolderMap.clear();
            while (cursor.moveToNext()) {
                int id = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media._ID));
                allSongList.add(id);
                //根据歌曲路径对歌曲按文件夹分类
                String path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
                sortFolder(Global.FolderMap,id,path);
            }
        }
    } catch (Exception e){
        e.printStackTrace();
    } finally {
        if(cursor != null && !cursor.isClosed())
            cursor.close();
    }

    return allSongList;
}
项目:android-jungle-framework    文件:FrescoImageLoaderEngine.java   
protected ImagePipelineConfig getFrescoConfig(Context context, String imgCachePath) {
    DiskCacheConfig diskCache = DiskCacheConfig
            .newBuilder(context)
            .setBaseDirectoryPath(new File(imgCachePath))
            .setBaseDirectoryName("imgcache")
            .setMaxCacheSize(64 * ByteConstants.MB)
            .setMaxCacheSizeOnLowDiskSpace(10 * ByteConstants.MB)
            .setMaxCacheSizeOnVeryLowDiskSpace(2 * ByteConstants.MB)
            .build();

    return ImagePipelineConfig.newBuilder(context)
            .setMainDiskCacheConfig(diskCache)
            .setDownsampleEnabled(true)
            .build();
}
项目:fresco    文件:DefaultNativeMemoryChunkPoolParams.java   
/**
 * {@link NativeMemoryChunkPool} manages memory on the native heap, so we don't need as strict
 * caps as we would if we were on the Dalvik heap. However, since native memory OOMs are
 * significantly more problematic than Dalvik OOMs, we would like to stay conservative.
 */
private static int getMaxSizeSoftCap() {
  final int maxMemory = (int)Math.min(Runtime.getRuntime().maxMemory(), Integer.MAX_VALUE);
  if (maxMemory < 16 * ByteConstants.MB) {
    return 3 * ByteConstants.MB;
  } else if (maxMemory < 32 * ByteConstants.MB) {
    return 6 * ByteConstants.MB;
  } else {
    return 12 * ByteConstants.MB;
  }
}
项目:fresco    文件:DefaultNativeMemoryChunkPoolParams.java   
/**
 * We need a smaller cap for devices with less then 16 MB so that we don't run the risk of
 * evicting other processes from the native heap.
 */
private static int getMaxSizeHardCap() {
  final int maxMemory = (int) Math.min(Runtime.getRuntime().maxMemory(), Integer.MAX_VALUE);
  if (maxMemory < 16 * ByteConstants.MB) {
    return maxMemory / 2;
  } else {
    return maxMemory / 4 * 3;
  }
}
项目:fresco    文件:DefaultBitmapPoolParams.java   
/**
 * Our Bitmaps live in ashmem, meaning that they are pinned in androids' shared native memory.
 * Therefore, we are not constrained by the max heap size of the dalvik heap, but we want to make
 * sure we don't use too much memory on low end devices, so that we don't force other background
 * process to be evicted.
 */
private static int getMaxSizeHardCap() {
  final int maxMemory = (int)Math.min(Runtime.getRuntime().maxMemory(), Integer.MAX_VALUE);
  if (maxMemory > 16 * ByteConstants.MB) {
    return maxMemory / 4 * 3;
  } else {
    return maxMemory / 2;
  }
}
项目:fresco    文件:DefaultEncodedMemoryCacheParamsSupplier.java   
private int getMaxCacheSize() {
  final int maxMemory = (int) Math.min(Runtime.getRuntime().maxMemory(), Integer.MAX_VALUE);
  if (maxMemory < 16 * ByteConstants.MB) {
    return 1 * ByteConstants.MB;
  } else if (maxMemory < 32 * ByteConstants.MB) {
    return 2 * ByteConstants.MB;
  } else {
    return 4 * ByteConstants.MB;
  }
}
项目:PicKing    文件:SettingFragment.java   
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preference_screen);

    colsDetail = (int) SPUtils.get(getActivity(), AppConfig.cols_detail, 0);
    RadioPreference cols = (RadioPreference) findPreference(AppConfig.cols_detail);
    cols.setSummary("当前显示列数: " + (colsDetail + 1) + "\n图册页加载图片一般较大,同时显示多列对设备性能要求较高,请酌情选择");

    EditTextPreference downloadPath = (EditTextPreference) findPreference(getResources().getString(R.string.download_path));
    downloadPath.setSummary((String) SPUtils.get(getActivity(), AppConfig.download_path, AppConfig.DOWNLOAD_PATH));

    noMedia = new File((String) SPUtils.get(getActivity(), AppConfig.download_path, AppConfig.DOWNLOAD_PATH) + File.separatorChar + ".nomedia");
    SwitchPreference noMediaSwitch = (SwitchPreference) findPreference(AppConfig.hide_pic);
    if (noMedia.exists())
        noMediaSwitch.setChecked(true);
    else
        noMediaSwitch.setChecked(false);

    Fresco.getImagePipelineFactory().getMainFileCache().trimToMinimum();
    float size = (float) Fresco.getImagePipelineFactory().getMainFileCache().getSize() / ByteConstants.MB;
    cacheSize = (EditTextPreference) findPreference(getResources().getString(R.string.cache_size));
    cacheSize.setSummary(String.format("已使用 %.2f MB", size));
}
项目:H-Viewer    文件:ImagePipelineConfigBuilder.java   
public static ImagePipelineConfig getDefaultImagePipelineConfig(Context context) {
    final int cacheSize = (int) SharedPreferencesUtil.getData(HViewerApplication.mContext,
            SettingFragment.KEY_PREF_CACHE_SIZE, 300);
    MAX_DISK_CACHE_VERYLOW_SIZE = cacheSize / 5 * ByteConstants.MB;
    MAX_DISK_CACHE_LOW_SIZE = cacheSize * 3 / 5 * ByteConstants.MB;
    MAX_DISK_CACHE_SIZE = cacheSize * ByteConstants.MB;

    //内存配置
    final MemoryCacheParams bitmapCacheParams = new MemoryCacheParams(
            MAX_MEMORY_CACHE_SIZE,          // 内存缓存中总图片的最大大小,以字节为单位。
            Integer.MAX_VALUE,              // 内存缓存中图片的最大数量。
            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(getDiskCacheDir(context))                         //缓存图片基路径
            .setBaseDirectoryName(IMAGE_PIPELINE_SMALL_CACHE_DIR)                   //文件夹名
            .setMaxCacheSize(MAX_DISK_CACHE_SIZE)                                   //默认缓存的最大大小。
            .setMaxCacheSizeOnLowDiskSpace(MAX_SMALL_DISK_LOW_CACHE_SIZE)           //缓存的最大大小,使用设备时低磁盘空间。
            .setMaxCacheSizeOnVeryLowDiskSpace(MAX_SMALL_DISK_VERYLOW_CACHE_SIZE)   //缓存的最大大小,当设备极低磁盘空间
            .setDiskTrimmableRegistry(NoOpDiskTrimmableRegistry.getInstance())
            .build();

    //默认图片的磁盘配置
    DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder(context)
            .setBaseDirectoryPath(getDiskCacheDir(context))//缓存图片基路径
            .setBaseDirectoryName(IMAGE_PIPELINE_CACHE_DIR)                         //文件夹名
            .setMaxCacheSize(MAX_DISK_CACHE_SIZE)                                   //默认缓存的最大大小。
            .setMaxCacheSizeOnLowDiskSpace(MAX_DISK_CACHE_LOW_SIZE)                 //缓存的最大大小,使用设备时低磁盘空间。
            .setMaxCacheSizeOnVeryLowDiskSpace(MAX_DISK_CACHE_VERYLOW_SIZE)         //缓存的最大大小,当设备极低磁盘空间
            .setDiskTrimmableRegistry(NoOpDiskTrimmableRegistry.getInstance())
            .build();

    // 自定义使用okhttp进行请求
    OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .addNetworkInterceptor(new StethoInterceptor())
            .connectTimeout(30, TimeUnit.SECONDS)
            .readTimeout(60, TimeUnit.SECONDS)
            .dns(new HttpDns())
            .build();

    //缓存图片配置
    ImagePipelineConfig.Builder configBuilder = ImagePipelineConfig.newBuilder(context)
            .setBitmapsConfig(Bitmap.Config.RGB_565)
            .setBitmapMemoryCacheParamsSupplier(mSupplierMemoryCacheParams)
            .setSmallImageDiskCacheConfig(diskSmallCacheConfig)
            .setMainDiskCacheConfig(diskCacheConfig)
            .setMemoryTrimmableRegistry(NoOpMemoryTrimmableRegistry.getInstance())
            .setResizeAndRotateEnabledForNetwork(true)
            .setNetworkFetcher(new MyOkHttpNetworkFetcher(okHttpClient));


    // 这段代码用于清理缓存
    NoOpMemoryTrimmableRegistry.getInstance().registerMemoryTrimmable(new MemoryTrimmable() {
        @Override
        public void trim(MemoryTrimType trimType) {
            final double suggestedTrimRatio = trimType.getSuggestedTrimRatio();

            Logger.d("ImagePipeline", String.format("onCreate suggestedTrimRatio : %d", suggestedTrimRatio));
            if (MemoryTrimType.OnCloseToDalvikHeapLimit.getSuggestedTrimRatio() == suggestedTrimRatio
                    || MemoryTrimType.OnSystemLowMemoryWhileAppInBackground.getSuggestedTrimRatio() == suggestedTrimRatio
                    || MemoryTrimType.OnSystemLowMemoryWhileAppInForeground.getSuggestedTrimRatio() == suggestedTrimRatio
                    ) {
                ImagePipelineFactory.getInstance().getImagePipeline().clearMemoryCaches();
            }
        }
    });

    return configBuilder.build();
}
项目:H-Viewer    文件:SettingFragment.java   
@Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getPreferenceManager().setSharedPreferencesName(SharedPreferencesUtil.FILE_NAME);
    addPreferencesFromResource(R.xml.preferences);

    String downloadPath = DownloadManager.getDownloadPath();
    if (downloadPath != null) {
        String displayPath = Uri.decode(downloadPath);
        getPreferenceManager().findPreference(KEY_PREF_DOWNLOAD_PATH).setSummary(displayPath);
    }
    ListPreference listPreference = (ListPreference) getPreferenceManager().findPreference(KEY_PREF_VIEW_DIRECTION);
    CharSequence[] entries = listPreference.getEntries();
    int i = listPreference.findIndexOfValue(listPreference.getValue());
    i = (i <= 0) ? 0 : i;
    listPreference.setSummary(entries[i]);
    listPreference.setOnPreferenceChangeListener(this);
    listPreference = (ListPreference) getPreferenceManager().findPreference(KEY_PREF_VIEW_VIDEO_PLAYER);
    entries = listPreference.getEntries();
    i = listPreference.findIndexOfValue(listPreference.getValue());
    i = (i <= 0) ? 0 : i;
    listPreference.setSummary(entries[i]);
    listPreference.setOnPreferenceChangeListener(this);

    getPreferenceScreen().setOnPreferenceChangeListener(this);
    final DirectoryChooserConfig config = DirectoryChooserConfig.builder()
            .initialDirectory((downloadPath.startsWith("/")) ? downloadPath : DownloadManager.DEFAULT_PATH)
            .newDirectoryName("download")
            .allowNewDirectoryNameModification(true)
            .build();
    mDialog = DirectoryChooserFragment.newInstance(config);
    mDialog.setTargetFragment(this, 0);

    float size = (float) Fresco.getImagePipelineFactory().getMainFileCache().getSize() / ByteConstants.MB;
    Preference cacheCleanPreference = getPreferenceManager().findPreference(KEY_PREF_CACHE_CLEAN);
    cacheCleanPreference.setSummary(String.format("已使用 %.2f MB", size));

    LongClickPreference prefDownloadPath = (LongClickPreference) getPreferenceManager().findPreference(KEY_PREF_DOWNLOAD_PATH);
    prefDownloadPath.setOnLongClickListener(v -> {
        new AlertDialog.Builder(activity)
                .setTitle("选择路径方式")
                .setItems(new String[]{"系统文档(新)", "路径选择框(旧)"}, (dialogInterface, pos) -> {
                    if (pos == 0 && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
                        intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
                        try {
                            startActivityForResult(intent, RESULT_CHOOSE_DIRECTORY);
                        } catch (ActivityNotFoundException e) {
                            e.printStackTrace();
                            mDialog.show(getFragmentManager(), null);
                        }
                        new Handler().postDelayed(() -> {
                            if (!opened)
                                activity.showSnackBar("如无法开启系统文档,长按使用旧工具");
                        }, 1000);
                    } else if (pos == 1) {
                        mDialog.show(getFragmentManager(), null);
                    } else
                        activity.showSnackBar("当前系统版本不支持");
                })
                .setNegativeButton(getString(R.string.cancel), null)
                .show();
        return true;
    });
}