我想解决下一个问题并希望得到你的帮助。我有一组带有一组图像的AbsListView。图像由后台线程膨胀,后者从互联网下载。我创建这个帖子,因为我不想阻止UI线程。因此,当用户滚动AbsListView时,我想销毁后台线程并在停止滚动后启动它。
要做到这一点,我至少需要覆盖 onScroll 方法,但我不知道我应该在它的主体中写什么,因为当我尝试使用 Thread.destroy() 方法(不推荐使用)我得到了 NoSuchMethodError 。
当我在onScroll中将其定义为null时,它会将下载的图像设置为滚动项目。
拜托,我需要你的建议如何应对这种情况。
答案 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
一行代码......简单如此=)