所以,我基本上想要禁用一个按钮,直到处理完一些下载的线程完成,我该如何以最好的方式处理它?起初我想到了一个快速修复:
while(thread.alive())
{
button.disable();
}
我觉得这不是一个解决这个问题的好方法,而且我不能使用“AsyncTask”解决方案,因为该操作将通过慢速连接处理相当大的文件。使用听众的正确方法是什么?
编辑:我的问题不是关于使用什么函数来禁用按钮,而是关于我如何知道线程何时完成以及如何在线程完成之前保持按钮被禁用。
答案 0 :(得分:1)
第一部分很简单:禁用onClicked
button.setEnabled(false);
这将为用户提供适当的反馈。
第二部分可以通过多种方式处理。你需要在大多数回调中进行回调。
如果您使用AsyncTask
,则应在onPostExecute
中再次启用该按钮。
使用Retrofit
或Volley
等库进行的回调也会在完成时再次启用该按钮。
如果您使用DownloadManager
,您可以并且应该收听发送的广播。您需要存储下载的id
以识别您的文件。
总而言之,您需要提供反馈方法,并且需要确保触发回调 ,以便按钮不会处于禁用状态。
答案 1 :(得分:0)
使用
button.setClickable(false);
而不是
button.disable();