无法理解空引用检查

时间:2016-03-06 06:21:30

标签: android

我从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);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

如果在对象构造期间使用非null对象分配了最终成员是否为null,则没有意义。它始终是非null。但是,对imageView参考的第二次检查是完全必要的。原作者可能误解了WeakReference的实际工作方式。