สำหรับเวอร์ชันล่าสุด 2.71828 นี่คือคำตอบของคุณ
Q1 : ไม่มีดิสก์แคชภายในเครื่องหรือไม่?
A1 : มีการแคชเริ่มต้นภายใน Picasso และขั้นตอนการร้องขอเช่นนี้
App -> Memory -> Disk -> Server
เมื่อใดก็ตามที่พวกเขาพบรูปภาพของพวกเขาก่อนพวกเขาจะใช้รูปภาพนั้นจากนั้นจึงหยุดขั้นตอนการร้องขอ กระแสตอบรับเป็นอย่างไร ไม่ต้องกังวลนี่คือ
Server -> Disk -> Memory -> App
ตามค่าเริ่มต้นพวกเขาจะจัดเก็บลงในดิสก์ภายในเครื่องก่อนสำหรับการเก็บรักษาแคชแบบขยาย จากนั้นหน่วยความจำสำหรับการใช้งานอินสแตนซ์ของแคช
คุณสามารถใช้ตัวบ่งชี้ในตัวใน Picasso เพื่อดูว่ารูปภาพอยู่ที่ใดโดยเปิดใช้งานสิ่งนี้
Picasso.get().setIndicatorEnabled(true);
จะปรากฏธงที่มุมบนซ้ายของรูปภาพของคุณ
- ธงสีแดงหมายถึงภาพที่มาจากเซิร์ฟเวอร์ (ไม่มีการแคชในการโหลดครั้งแรก)
- ธงสีน้ำเงินหมายถึงภาพถ่ายมาจากดิสก์ภายในเครื่อง (เก็บเอาไว้)
- ธงสีเขียวหมายถึงภาพที่มาจากหน่วยความจำ (การแคชอินสแตนซ์)
Q2 : ฉันจะเปิดใช้งานการแคชดิสก์ได้อย่างไรเนื่องจากฉันจะใช้ภาพเดียวกันหลาย ๆ ครั้ง
A2 : คุณไม่จำเป็นต้องเปิดใช้งาน เป็นค่าเริ่มต้น
สิ่งที่คุณต้องทำคือปิดการใช้งานเมื่อคุณต้องการให้ภาพของคุณสดใหม่อยู่เสมอ มี 2-way of disabled caching.
- ตั้งค่า
.memoryPolicy()
เป็นNO_CACHEและ / หรือNO_STOREและโฟลว์จะมีลักษณะดังนี้
NO_CACHEจะข้ามการค้นหาภาพจากหน่วยความจำ
App -> Disk -> Server
NO_STOREจะข้ามการจัดเก็บภาพในหน่วยความจำเมื่อโหลดภาพครั้งแรก
Server -> Disk -> App
- ตั้งค่า
.networkPolicy()
เป็นNO_CACHEและ / หรือNO_STOREและโฟลว์จะมีลักษณะดังนี้
NO_CACHEจะข้ามการค้นหาภาพจากดิสก์
App -> Memory -> Server
NO_STOREจะข้ามการจัดเก็บภาพในดิสก์เมื่อโหลดภาพครั้งแรก
Server -> Memory -> App
คุณไม่สามารถปิดใช้งานได้หากไม่มีภาพแคช นี่คือตัวอย่าง
Picasso.get().load(imageUrl)
.memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE)
.networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE)
.fit().into(banner);
การไหลของการไม่มีแคชและไม่มีการจัดเก็บจะมีลักษณะเช่นนี้
App -> Server //Request
Server -> App //Response
ดังนั้นคุณอาจต้องใช้สิ่งนี้เพื่อลดการใช้พื้นที่เก็บข้อมูลแอปของคุณด้วย
Q3 : ฉันต้องเพิ่มการอนุญาตดิสก์ให้กับไฟล์รายการของ Android หรือไม่
A3 : ไม่ได้ แต่อย่าลืมเพิ่มสิทธิ์อินเทอร์เน็ตสำหรับคำขอ HTTP ของคุณ