2016-02-04 48 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();