Load Images from Disk Cache with Picasso If Offline

Why Picasso is not saving image in cache for offline use?

add the OkHttp to the gradle build file of the app module :

compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.okhttp:okhttp:2.4.0'

Picasso use the HTTP client request to Disk Cache operation So you can make your own http request header has property Cache-Control with max-age And create your own Static Picasso Instance instead of default Picasso By using Okhttp.

Both the Okhttp and picasso libraries are provided by squareup team.

References: How do I use disk caching in Picasso? and Github issue about disk cache, two Questions has been answered by @jake-wharton -> Question1 and Question2

Load image with Picasso when offline using SSL

It's working using OKHTTP :

Picasso.with(context).load("url")
.networkPolicy(NetworkPolicy.OFFLINE)
.into(photo, new Callback() {
@Override
public void onSuccess() {

}

@Override
public void onError() {
Picasso.with(context)
.load("url")
.placeholder(R.mipmap.ic_launcher)
.error(R.drawable.user_error)
.into(picture);
}
});

Does picasso library caches images automatically?

1)Does Picasso caches images automatically?

Yes, it does. This is the description of the library:

A powerful image downloading and caching library for Android.

So you'll have your own cache.

Because I have seen people using okhttp3 to cache images for offline use.

There are many other libraries for that.

If yes why would they use another library to cache?

You can use Picasso or any other library but it's up to you to choose which one you feel more comfortable with.

2) if your phone storage is running low, would Picasso caching system still cache it and crash the app?

Yes, it will. This library is not checking your disk space. This operation should be done by the user. Eventually, when you have no more space left on your device and your app will try to write a new image to the disk, it will throw an exception.

3)In my app, i am using Picasso.get().fit(). If Picasso library is caching, does it cache the whole image or only the fit version(smaller than the whole image).

It will cache the image you get but there are options to transform it. You can resize the image as you like:

Picasso.get()
.load(url)
.resize(50, 50)
.centerCrop()
.into(imageView)

PS. For Android, we use also Glide:

Glide is a fast and efficient open-source media management and image loading framework for Android that wraps media decoding, memory and disk caching, and resource pooling into a simple and easy to use interface.

Loading images from disk with picasso, does it cache it?

When loading the image you can set the memory policy to NO_STORE:

Picasso
.with(context)
.memoryPolicy(MemoryPolicy.NO_STORE)
...


Related Topics



Leave a reply



Submit