Ich erstelle eine Profilseite für meine App. Ich habe es so gemacht, dass beim Tippen auf das vorherige Profilbild der Benutzer sein Profilbild ändern kann. Ich möchte, dass nach dem Upload das Profilbild sofort aktualisiert wird. Ich habe versucht, Picasso zu verwenden, aber es scheint einige Probleme mit dem Cache zu haben. In der Tat, nachdem der Benutzer sein Bild gewählt hat, ist das Bild, das angezeigt wird, das gleiche wie zuvor, trotz der Tatsache, dass die App die vorherige Bilddatei überschreibt und Picasso erneut anwendet. Ich bin mit Android API 22.Persistente Thumbnails mit PIcasso
Profile.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.profile);
ImageView pic = (ImageView) findViewById(R.id.picc);
...
String root = Environment.getExternalStorageDirectory().toString();
String path = root + "/directory/name.jpg";
MainActivity.trimCache(this);
Picasso.with(getApplicationContext()).load(path)
.networkPolicy(NetworkPolicy.NO_CACHE)
.memoryPolicy(MemoryPolicy.NO_CACHE)
.transform(new RoundedTransformation(1000, 0))
.resize(500, 500)
.centerCrop()
.into(pic);
}
pic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent chooseImageIntent = ImagePicker.getPickImageIntent(getApplicationContext());
startActivityForResult(chooseImageIntent, PICK_IMAGE_ID);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Bitmap bitmap = ImagePicker.getImageFromResult(this, resultCode, data);
ImageView pic = (ImageView) findViewById(R.id.picc);
RetrieveFeedTask job = new RetrieveFeedTask(data, resultCode, this, bitmap);
job.execute("user","pass");
String root = Environment.getExternalStorageDirectory().toString();
String path = root + "/directory/name.jpg";
MainActivity.trimCache(this);
Picasso.with(getApplicationContext()).load(path)
.networkPolicy(NetworkPolicy.NO_CACHE)
.memoryPolicy(MemoryPolicy.NO_CACHE)
.transform(new RoundedTransformation(1000, 0))
.resize(500, 500)
.centerCrop()
.into(pic);
}
ImagePicker.java ist ein Standardbild-Picker-Datei.
Ich habe auch versucht, den Cache aus der App mit der folgenden Funktion standardmäßig halte Cache einen Speicher
public static void trimCache(Context context) {
try {
File dir = context.getCacheDir();
if (dir != null && dir.isDirectory()) {
deleteDir(dir);
}
} catch (Exception e) {
// TODO: handle exception
}
}