我从here阅读了教程,无法理解为什么作者在null-reference上检查WeakReference
?据我所知,JM只删除WeakReference
包含但不包含WeakReference
对象的对象引用。我也应该做这个检查吗?
class BitmapDownloaderTask extends AsyncTask<String, Void, Bitmap> {
private String url;
private final WeakReference<ImageView> imageViewReference;
public BitmapDownloaderTask(ImageView imageView) {
imageViewReference = new WeakReference<ImageView>(imageView);
}
@Override
// Once the image is downloaded, associates it to the imageView
protected void onPostExecute(Bitmap bitmap) {
if (isCancelled()) {
bitmap = null;
}
if (imageViewReference != null) {
ImageView imageView = imageViewReference.get();
if (imageView != null) {
imageView.setImageBitmap(bitmap);
}
}
}
}
答案 0 :(得分:2)
如果在对象构造期间使用非null对象分配了最终成员是否为null,则没有意义。它始终是非null。但是,对imageView参考的第二次检查是完全必要的。原作者可能误解了WeakReference的实际工作方式。