在滚动AbsListView期间销毁线程

时间:2011-02-10 12:58:00

标签: android

我想解决下一个问题并希望得到你的帮助。我有一组带有一组图像的AbsListView。图像由后台线程膨胀,后者从互联网下载。我创建这个帖子,因为我不想阻止UI线程。因此,当用户滚动AbsListView时,我想销毁后台线程并在停止滚动后启动它。

要做到这一点,我至少需要覆盖 onScroll 方法,但我不知道我应该在它的主体中写什么,因为当我尝试使用 Thread.destroy() 方法(不推荐使用)我得到了 NoSuchMethodError

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

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

3 个答案:

答案 0 :(得分:3)

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

它易于使用,并且有一些方便的方法,例如.cancel(); 如果弃用java api方法,则不应使用它。

答案 1 :(得分:0)

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

我不相信AsyncTask最适合您的情况,因为cancel()方法实际上并没有停止doInBackground()中正在进行的处理,它只是阻止调用onPostExecute(),而是调用onCancelled()

答案 2 :(得分:0)

老兄检查库,异步从网上下载/缓存图像 https://github.com/koush/UrlImageViewHelper

一行代码......简单如此=)