我正在使用AsyncTask在ListView中加载一些图片。代码大致如下:
private void loadImageInBackground(ViewHolder holder, Location location) {
ImageViewLoader coverImageLoader = new ImageViewLoader(holder.locationImage, coversImgCache);
coverImageLoader.execute(location.getImageUrl());
}
其中 ImageViewLoader 只是一个扩展的 AsyncTask。
据我的理解,垃圾回收器会收集所有不再被引用的内容。
当栈指针离开上面的函数时,该类失去了对创建的 ImageViewLoader 对象的任何引用。这应该被垃圾回收,不是吗?
然而,AsyncTask 仍在工作,并最终回调 onPostExecute。
我猜其中一种可能是它创建了一个线程,而该线程有一个对象的引用。一旦线程结束,AsyncTask 也会被垃圾回收。
我的猜测与实际答案有多接近?