我發現這個例子來自Fedor的Lazy load of images in ListView,這絕對是我所需要的。帶圖像的懶惰列表。如何取消線程?
我有一個問題。如果在清除緩存按鈕旁邊會出現一個帶有取消的按鈕。我怎麼能在onClick取消從UI的圖像下載線程?
謝謝。
編輯: 我認爲,它已經有這個方法來實現:
public void stopThread()
{
photoLoaderThread.interrupt();
}
但我不知道如何從UI線程訪問它。在UI線程我只能這樣做:
adapter=new LazyAdapter(ctx, someString);
setListAdapter(adapter);
在LazyAdapter
:
public View getView(int position, View convertView, ViewGroup parent) {
...
imageLoader.DisplayImage(imagePath, activity, holder.image);
return vi;
}
和ImageLoader的
public void DisplayImage(String url, Activity activity, ImageView imageView)
{
if(cache.containsKey(url))
imageView.setImageBitmap(cache.get(url));
else
{
queuePhoto(url, activity, imageView);
imageView.setImageResource(stub_id);
}
}
private void queuePhoto(String url, Activity activity, ImageView imageView)
{
//This ImageView may be used for other images before. So there may be some old tasks in the queue. We need to discard them.
photosQueue.Clean(imageView);
PhotoToLoad p=new PhotoToLoad(url, imageView);
synchronized(photosQueue.photosToLoad){
photosQueue.photosToLoad.push(p);
photosQueue.photosToLoad.notifyAll();
}
//start thread if it's not started yet
if(photoLoaderThread.getState()==Thread.State.NEW)
photoLoaderThread.start();
}
但我認爲一個明確的方法是從link text
下載源代碼謝謝你的幫助。
啊,我很傻。現在我已經看到了有命令的ui上的onDestroy overrite方法。 Fedor,我非常感謝你的例子,它在我的應用程序中幫了我很大的忙,它的作用就像一個魅力。謝謝謝謝。 – Alin 2010-10-01 11:07:57