gpt4 book ai didi

java - Picasso 的永久缩略图

转载 作者:行者123 更新时间:2023-11-30 10:43:15 24 4
gpt4 key购买 nike

我正在为我的应用构建一个配置文件页面。我采用的方式是点击之前的个人资料图片,用户将能够更改其个人资料图片。我希望上传后,个人资料图片会立即更新。我试过使用 Picasso,但缓存似乎有一些问题。事实上,在用户选择了他的图像之后,显示的图片与之前相同,尽管应用程序覆盖了之前的图像文件并重新应用了 Picasso。我正在使用 Android API 22。

配置文件.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 是一个标准的图像选择器文件。

我还尝试使用以下函数从应用程序中删除缓存

public static void trimCache(Context context) {
try {
File dir = context.getCacheDir();
if (dir != null && dir.isDirectory()) {
deleteDir(dir);
}
} catch (Exception e) {
// TODO: handle exception
}
}

最佳答案

默认情况下,Picasso 实例拥有一个内存缓存。 Picasso 看到缓存的相同键(在本例中为 path),并且只是简单地从缓存中返回它从该键获取的 Bitmap 实例。

使用 memoryPolicy(MemoryPolicy.NO_CACHE) 可以跳过缓存检查;您确定这就是您在更改/更新后调用图像的方式吗?

关于java - Picasso 的永久缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37842058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com