我仔细查看了这里的文档http://developer.android.com/training/displaying-bitmaps/process-bitmap.html,并使用本指南http://android-developers.blogspot.in/2010/07/multithreading-for-performance.html创建了一个处理AsynchTasks并发性的ImageLoader。
我的代码几乎相同,特别是我的代码完全相同:
private static BitmapDownloaderTask getBitmapDownloaderTask(ImageView imageView) {
if (imageView != null) {
Drawable drawable = imageView.getDrawable();
if (drawable instanceof DownloadedDrawable) {
DownloadedDrawable downloadedDrawable = (DownloadedDrawable)drawable;
return downloadedDrawable.getBitmapDownloaderTask();
}
}
return null;
}
问题在于条件
drawable instanceof DownloadedDrawable
永远不会被验证。一切看起来都不错,但drawable
似乎不是我DownloadedDrawable
课程的一个实例,我不知道为什么。你能救我吗?
编辑:我发现这与参考文献有关。实际上,imageView.getDrawable()
返回一个具有BitmapDrawable引用的对象
android.graphics.drawable.BitmapDrawable@yyyyyyyy
如果我尝试将其强制转换为DownloadedDrawable对象(我的自定义子类的实例)或者在其上使用instanceof运算符,则会出现错误,因为使用DowanloadedDrawable引用访问该对象
my_package.image_loader.DownloadedDrawable@xxxxxxxx
如何解决这个问题?