2011-02-10 66 views
0

我想解決下一個問題,希望對您有所幫助。我有一組圖像的AbsListView。圖像是由後臺線程從網上下載它膨脹。我做這個線程,因爲我不想阻礙UI線程。所以當用戶滾動AbsListView時,我想銷燬後臺線程並在停止滾動後啓動它。銷燬線程,在滾動期間AbsListView

要做到這一點,我需要至少覆蓋​​onScroll方法,但我不知道我應該怎麼寫在它的身上,因爲當我嘗試使用Thread.destroy()方法(這是棄用)我得到NoSuchMethodError

當我在onScroll中將其定義爲null時,它將下載的圖像設置爲滾動項目。

請,我需要你的建議如何應對這種情況。

回答

3

通常不建議通過擴展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

0

請參閱下面的文章,討論在Java中停止Thread的方法。

我不相信,一個AsyncTask將是一個很好的適合你的情況,因爲cancel()方法實際上並沒有停止在doInBackground()發生的處理,它只是防止onPostExecute()從被調用,而不是調用onCancelled()