非UI线程处理Bitmap(可以替换为其它对象)
以下摘自官网
class BitmapWorkerTask extends AsyncTask {
private final WeakReference imageViewReference; //注意用了final
private int data = 0;
public BitmapWorkerTask(ImageView imageView) {
// 使用WeakReference确保ImageView能被回收
imageViewReference = new WeakReference(imageView);
}
// Decode image in background.
@Override
protected Bitmap doInBackground(Integer... params) {
data = params[0];
return decodeSampledBitmapFromResource(getResources(), data, 100, 100));
}
// 完成后,看ImageView是否仍还在,在UI中更新.
@Override
protected void onPostExecute(Bitmap bitmap) {
if (imageViewReference != null && bitmap != null) {
final ImageView imageView = imageViewReference.get();
if (imageView != null) {
imageView.setImageBitmap(bitmap);
}
}
}
}
WeakReference在Android中的使用ImageView设置
最新推荐文章于 2021-05-29 18:04:58 发布