经过分析google官方提供sample:DisplayingBitmaps 。对其实现方式做个简单的总结。
在使用时,主要使用DisplayingBitmaps project下的util包下的ImageFetcher类。主要有两个点需要说明:
1、在列表滚动时,ImageFetcher会调用setPauseWork(),setPauseWork方法的实现在ImageWorker中,将ImageWorker中的mPauseWork设置为相应的值。在ImageWork的子类BitmapWorkerTaskImageView中,doInBackground会对mPauseWork变量进行判断,如果是真并且task没有取消,则会等待。流程图见图1。
图1
2、ImageFetcher在adapter中调用了loadImage(Object object, ImaegView imageView),其流程图如图2所示<