En güncel 2.71828 sürümü için Bunlar sizin cevabınız.
S1 : Yerel disk önbelleği yok mu?
A1 : Picasso'da varsayılan önbelleğe alma var ve istek akışı aynen bunun gibi
App -> Memory -> Disk -> Server
Görüntüleriyle ilk karşılaştıkları her yerde, o görüntüyü kullanacaklar ve ardından istek akışını durduracaklar. Yanıt akışı ne olacak? Merak etmeyin, işte burada.
Server -> Disk -> Memory -> App
Varsayılan olarak, genişletilmiş saklama önbelleği için önce bir yerel diskte depolanırlar. Ardından, önbelleğin örnek kullanımı için bellek.
Bunu etkinleştirerek görüntülerin nerede oluştuğunu görmek için Picasso'daki yerleşik göstergeyi kullanabilirsiniz.
Picasso.get().setIndicatorEnabled(true);
Resimlerinizin sol üst köşesinde bir bayrak görünecektir.
- Kırmızı bayrak, görüntülerin sunucudan geldiği anlamına gelir. (İlk yüklemede önbelleğe alma yok)
- Mavi bayrak, fotoğrafların yerel diskten geldiği anlamına gelir. (Önbelleğe almak)
- Yeşil bayrak, görüntülerin bellekten geldiği anlamına gelir. (Örnek Önbelleğe Alma)
S2 : Aynı görüntüyü birden çok kez kullanacağım için disk önbelleğe almayı nasıl etkinleştirebilirim?
A2 : Etkinleştirmenize gerek yok. Bu varsayılandır.
Yapmanız gereken şey, resimlerinizin her zaman taze olmasını istediğinizde bunu DEVRE DIŞI BIRAKMAK . Engelli önbelleğe almanın 2 yolu vardır.
- Set
.memoryPolicy()
için NO_CACHE ve / veya NO_STORE ve akış aşağıdaki gibi görünecektir.
NO_CACHE bellekten resim aramayı atlayacaktır.
App -> Disk -> Server
NO_STORE , görüntüleri ilk yüklerken bellekteki görüntüleri atlayacaktır.
Server -> Disk -> App
- Set
.networkPolicy()
için NO_CACHE ve / veya NO_STORE ve akış aşağıdaki gibi görünecektir.
NO_CACHE diskten resim aramayı atlayacak.
App -> Memory -> Server
NO_STORE , görüntüleri ilk yüklerken diskteki görüntüleri atlayacaktır.
Server -> Memory -> App
Sen edebilirsiniz DEVRE DIŞI tamamen yok görüntüleri önbelleğe alma için de. İşte bir örnek.
Picasso.get().load(imageUrl)
.memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE)
.networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE)
.fit().into(banner);
Tamamen önbelleğe alma ve depolamanın olmadığı akış böyle görünecektir.
App -> Server //Request
Server -> App //Response
Dolayısıyla, uygulama depolama kullanımınızı da küçültmek için buna ihtiyacınız olabilir.
S3 : Android bildirim dosyasına biraz disk izni eklemem gerekir mi?
A3 : Hayır, ancak HTTP isteğiniz için İNTERNET iznini eklemeyi unutmayın.