销毁线程,在滚动期间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方法,则不应使用它。
答
请参阅下面的文章,讨论在Java中停止Thread
的方法。
我不相信,一个AsyncTask
将是一个很好的适合你的情况,因为cancel()
方法实际上并没有停止在doInBackground()
发生的处理,它只是防止onPostExecute()
从被调用,而不是调用onCancelled()
。
,但我的问题是,每来自我的AbsListView的项目具有处理后台线程发送消息的处理程序,并且我无法意识到应该如何将此机制应用于AsyncTask。但无论如何,谢谢你的回应。 – teoREtik 2011-02-10 13:26:05
AsyncTask被忽略,具有与常规线程相同的功能。我不明白为什么你不能从doInBackground做处理器发布,就像你在普通线程中从run()那样做。 – 2011-02-10 13:29:32