2016-02-04 95 views
1

因此,我基本上想要禁用按鈕,直到處理一些下載的線程完成,我如何以最好的方式來處理這個問題?起初我以爲權宜之計:Android - 線程運行時禁用按鈕

while(thread.alive()) 
{ 
button.disable(); 
} 

我不覺得這是解決這個問題,而且我不能使用,因爲該操作的「的AsyncTask」解決方案的一個很好的方式去處理相當大文件通過慢速連接。使用偵聽器的正確方法是什麼?

編輯:我的問題不是關於使用什麼函數來禁用按鈕,而是關於如何知道線程何時完成,以及如何禁用按鈕直到線程完成。

+0

你可以使用button.setVisibility(View.GONE); –

回答

1

第一部分是簡單的:在onClicked

button.setEnabled(false); 

這將提供給用戶適當的反饋禁用按鈕。

第二部分可以用很多方式處理。其中大部分都需要回調。

  • 如果您使用的是AsyncTask你應該onPostExecute再次啓用按鈕。

  • 類似RetrofitVolley等庫的回調函數也會在完成時再次啓用該按鈕。

  • 如果您使用DownloadManager您可以並且應該監聽發送的廣播。您需要存儲下載的id以識別您的文件。

總而言之,你需要提供反饋的方法和需要,以確保回調觸發,使得按鈕不會禁用狀態留。

0

使用

button.setClickable(false); 

而不是

button.disable();