Fresco’s image pipeline will load images from the network, local storage, or local resources. To save data and CPU, it has three levels of cache; two in memory and another in internal storage. Fresco’s Drawee shows a placeholder for you until the image has loaded and then automatically shows the image when it arrives. When the image goes off-screen, it automatically releases its memory. A decompressed image - an Android Bitmap - takes up a lot of memory. This leads to more frequent runs of the Java garbage collector. This slows apps down. The problem is especially bad without the improvements to the garbage collector made in Android 5.0. On Android 4.x and lower, Fresco puts images in a special region of Android memory. It also makes sure that images are automatically released from memory when they’re no longer shown on screen. This lets your application run faster - and suffer fewer crashes.
Features
- Specify several different uris for an image, and choose the one already in cache for display
- Show a low-resolution image first and swap to a higher-res one when it arrives
- Send events back into your app when the image arrives
- If the image has an EXIF thumbnail, show it first until the full image loads (local images only)
- Resize or rotate the image and modify the downloaded image in-place
- Decode WebP images, even on older versions of Android that don’t fully support them