销毁线程,在滚动期间AbsListView

问题描述:

我想解决下一个问题,希望对您有所帮助。我有一组图像的AbsListView。图像是由后台线程从网上下载它膨胀。我做这个线程,因为我不想阻碍UI线程。所以当用户滚动AbsListView时,我想销毁后台线程并在停止滚动后启动它。销毁线程,在滚动期间AbsListView

要做到这一点,我需要至少覆盖​​onScroll方法,但我不知道我应该怎么写在它的身上,因为当我尝试使用Thread.destroy()方法(这是弃用)我得到NoSuchMethodError

当我在onScroll中将其定义为null时,它将下载的图像设置为滚动项目。

请,我需要你的建议如何应对这种情况。

通常不建议通过扩展Thread来使用线程化功能。 Android有一个奇妙的东西叫AsyncTask http://developer.android.com/reference/android/os/AsyncTask.html

它很容易使用,并有一个方便的方法,如.cancel(); 如果不推荐使用java api方法,则不应使用它。

+0

,但我的问题是,每来自我的AbsListView的项目具有处理后台线程发送消息的处理程序,并且我无法意识到应该如何将此机制应用于AsyncTask。但无论如何,谢谢你的回应。 – teoREtik 2011-02-10 13:26:05

+0

AsyncTask被忽略,具有与常规线程相同的功能。我不明白为什么你不能从doInBackground做处理器发布,就像你在普通线程中从run()那样做。 – 2011-02-10 13:29:32

请参阅下面的文章,讨论在Java中停止Thread的方法。

我不相信,一个AsyncTask将是一个很好的适合你的情况,因为cancel()方法实际上并没有停止在doInBackground()发生的处理,它只是防止onPostExecute()从被调用,而不是调用onCancelled()

家伙看看我想过的AsyncTask使用异步下载/缓存图像从网页的代码 https://github.com/koush/UrlImageViewHelper

一行..这么简单库=)