private FrescoImageLoader(Context appContext) { mAppContext = appContext; mExecutorSupplier = new DefaultExecutorSupplier(Runtime.getRuntime().availableProcessors()); }
@Override public void onLowMemory() { super.onLowMemory(); ImagePipeline imagePipeline = Fresco.getImagePipeline(); //清空内存缓存(包括Bitmap缓存和未解码图片的缓存) imagePipeline.clearMemoryCaches(); //清空硬盘缓存,一般在设置界面供用户手动清理 //imagePipeline.clearDiskCaches(); //同时清理内存缓存和硬盘缓存 //imagePipeline.clearCaches(); }
@Override public void prefetch(Uri uri) { ImagePipeline pipeline = Fresco.getImagePipeline(); pipeline.prefetchToDiskCache(ImageRequest.fromUri(uri), false); // we don't need context, but avoid null }
ImagePipelineConfig.Builder builder = ImagePipelineConfig.newBuilder(context) .setDownsampleEnabled(true); builder.setBitmapMemoryCacheParamsSupplier(mSupplierMemoryCacheParams); ImagePipelineConfig.Builder configBuilder = ImagePipelineConfig.newBuilder(context) .setBitmapMemoryCacheParamsSupplier(mSupplierMemoryCacheParams)//内存缓存配置(一级缓存,已解码的图片) .setMainDiskCacheConfig(diskCacheConfig)//磁盘缓存配置(总,三级缓存) return builder.build();
@Override public void onCreate() { super.onCreate(); SugarContext.init(getApplicationContext()); SchemaGenerator schemaGenerator = new SchemaGenerator(this); schemaGenerator.createDatabase(new SugarDb(this).getDB()); mPrefs = new PreferenceManager(this); ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this) .setProgressiveJpegConfig(new SimpleProgressiveJpegConfig()) .setResizeAndRotateEnabledForNetwork(true) .setDownsampleEnabled(true) .build(); Fresco.initialize(this,config); AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); if (mPrefs.getRemoteAccessActive()) startServer(); }
public BaseInterfaceAdapter (Context context) { DiskCacheConfig diskCacheConfig = DiskCacheConfig .newBuilder(context) .setMaxCacheSizeOnVeryLowDiskSpace(10 * ByteConstants.MB) .setMaxCacheSizeOnLowDiskSpace(20 * ByteConstants.MB) .setMaxCacheSize(40 * ByteConstants.MB) .build(); Set<RequestListener> requestListeners = new HashSet<>(); // requestListeners.add(new RequestLoggingListener()); ImagePipelineConfig config = ImagePipelineConfig.newBuilder(context) // other setters .setRequestListeners(requestListeners) .setMainDiskCacheConfig(diskCacheConfig) .build(); Fresco.initialize(context, config); // FLog.setMinimumLoggingLevel(FLog.VERBOSE); setMessageHandler(new TextMessageDisplayHandler(), new MessageType(MessageType.Text)); setMessageHandler(new ImageMessageDisplayHandler(), new MessageType(MessageType.Image)); setMessageHandler(new LocationMessageDisplayHandler(), new MessageType(MessageType.Location)); }
@Override public void onCreate() { super.onCreate(); //Use Fresco Set<RequestListener> listeners = new HashSet<>(); listeners.add(new RequestLoggingListener()); ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this) .setRequestListeners(listeners) .setDownsampleEnabled(true) .build(); Fresco.initialize(this, config); //To fix bug : spinner bg is dark when mode is night. AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); //Check password if (SPFManager.getPassword(this).equals("")) { hasPassword = false; } else { hasPassword = true; } //init Theme & language initTheme(); setLocaleLanguage(); }
/** * Creates config using android http stack as network backend. */ public static ImagePipelineConfig getImagePipelineConfig(Context context) { if (sImagePipelineConfig == null) { ImagePipelineConfig.Builder configBuilder = ImagePipelineConfig.newBuilder(context); configureCaches(configBuilder, context); sImagePipelineConfig = configBuilder.build(); } return sImagePipelineConfig; }
ImagePipeline imagePipeline = Fresco.getImagePipeline(); DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, AlbumsDetailActivity.this);
CacheKey cacheKey = DefaultCacheKeyFactory.getInstance() .getEncodedCacheKey(imageRequest); BinaryResource resource = ImagePipelineFactory.getInstance() .getMainDiskStorageCache().getResource(cacheKey); File file = ((FileBinaryResource) resource).getFile(); if (file != null) { ImagePipeline imagePipeline = Fresco.getImagePipeline(); DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, RadioDetailActivity.this);
private File getCacheFile(final ImageRequest request) { FileCache mainFileCache = ImagePipelineFactory .getInstance() .getMainFileCache(); final CacheKey cacheKey = DefaultCacheKeyFactory .getInstance() .getEncodedCacheKey(request, false); // we don't need context, but avoid null File cacheFile = request.getSourceFile(); // http://crashes.to/s/ee10638fb31 if (mainFileCache.hasKey(cacheKey) && mainFileCache.getResource(cacheKey) != null) { cacheFile = ((FileBinaryResource) mainFileCache.getResource(cacheKey)).getFile(); } return cacheFile; } }
/** * Create ImagePipelineConfig Builder */ private static ImagePipelineConfig.Builder createConfigBuilder(Context context) { return ImagePipelineConfig.newBuilder(context); }
@Override public void trim(MemoryTrimType trimType) { final double suggestedTrimRatio = trimType.getSuggestedTrimRatio(); if (MemoryTrimType.OnCloseToDalvikHeapLimit.getSuggestedTrimRatio() == suggestedTrimRatio || MemoryTrimType.OnSystemLowMemoryWhileAppInBackground.getSuggestedTrimRatio() == suggestedTrimRatio || MemoryTrimType.OnSystemLowMemoryWhileAppInForeground.getSuggestedTrimRatio() == suggestedTrimRatio ) { ImagePipelineFactory.getInstance().getImagePipeline().clearMemoryCaches(); } } });
private void setAlbumart() { playlistTitleView.setText(playlistName); if(albumPath == null){ albumArtSmall.setImageResource(R.drawable.placeholder_disk_210); }else { albumArtSmall.setImageURI(Uri.parse(albumPath)); } try { if (isLocalPlaylist && !URLUtil.isNetworkUrl(albumPath)) { new setBlurredAlbumArt().execute(ImageUtils.getArtworkQuick(PlaylistActivity.this, Uri.parse(albumPath), 300, 300)); L.D(d, TAG, "albumpath = " + albumPath); } else { //drawable = Drawable.createFromStream( new URL(albumPath).openStream(),"src"); ImageRequest imageRequest = ImageRequest.fromUri(albumPath); CacheKey cacheKey = DefaultCacheKeyFactory.getInstance() .getEncodedCacheKey(imageRequest); BinaryResource resource = ImagePipelineFactory.getInstance() .getMainDiskStorageCache().getResource(cacheKey); File file = ((FileBinaryResource) resource).getFile(); if (file != null) new setBlurredAlbumArt().execute(ImageUtils.getArtworkQuick(file, 300, 300)); } } catch (Exception e) { e.printStackTrace(); } }
mExecutorSupplier.forLocalStorageRead().execute(new Runnable() { @Override public void run() { = pipeline.fetchEncodedImage(request, true); source.subscribe(new ImageDownloadSubscriber(mAppContext) { @Override callback.onFail((Exception) t); }, mExecutorSupplier.forBackgroundTasks());
ImagePipeline imagePipeline = Fresco.getImagePipeline(); DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, MediaService.this);
dataSource = imagePipeline.fetchDecodedImage(imageRequest, PlayingActivity.this);
ImagePipeline imagePipeline = Fresco.getImagePipeline(); DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, this);
public static Single<Bitmap> bitmapForURL (final Context context, final String url) { return Single.create((SingleOnSubscribe<Bitmap>) e -> { if(!StringChecker.isNullOrEmpty(url)) { Uri uri = Uri.parse(url); ImageRequest request = ImageRequestBuilder .newBuilderWithSource(uri) .build(); ImagePipeline pipeline = Fresco.getImagePipeline(); DataSource dataSource = pipeline.fetchDecodedImage(request, context); dataSource.subscribe(new BaseBitmapDataSubscriber() { @Override protected void onNewResultImpl(Bitmap bitmap) { // We need to copy the bitmap because in some cases, Fresco is recycling the bitmap // which causes a crash later on. Seen this problem in Android 5 e.onSuccess(bitmap.copy(bitmap.getConfig(), true)); } @Override protected void onFailureImpl(DataSource<CloseableReference<CloseableImage>> dataSource) { e.onError(new Throwable(context.getString(R.string.unable_to_load_image))); } }, CallerThreadExecutor.getInstance()); } else { e.onError(new Throwable("Unable to load image")); } }).subscribeOn(AndroidSchedulers.mainThread()); } }
DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, this); dataSource.subscribe(new BaseBitmapDataSubscriber() { @Override