通过单击按钮两次足够快来绕过模式Android对话框?

| 假设我们有两个按钮,每个按钮都有一个OnClickListener。每个侦听器都显示一个ProgressDialog并进行一些后台工作。 (在幕后是一个AsyncTask,该对话框在onPreExecute中打开。我认为这并不重要,仅作记录...)。假设有一条规则说,在任何给定时间最多只能有一个后台工作者处于活动状态。 我的假设是对话框阻止两个后台工作程序同时运行。我认为模式对话框会阻塞UI,并且在调用对话框的show()方法后无法单击另一个按钮。我错了。 如果您足够快地单击按钮,则可以(几乎)同时触发两个后台工作人员。日志显示,尽管有对话框,也可以在150毫秒的时间内单击两个按钮: 04-14 18:34:04.390:调试/ greenrobot(1860):点击:2131034112 04-14 18:34:04.470:调试/ greenrobot(1860):doInBackground2:2131034112 04-14 18:34:04.540:调试/ greenrobot(1860):单击:2131034113 04-14 18:34:04.570:调试/ greenrobot(1860):doInBackground2:2131034113 对话框代码如下所示:
progressDialog = new ProgressDialog(currentActivity);
progressDialog.setMessage(msg);
progressDialog.show(); 
我错过了什么?我希望我错过了一些真正愚蠢的事情,因为如果没有,我想不出一个很好的解决方案来防止单击后的UI交互。同步后台工作程序不是解决方案,因为UI和方案更加复杂。     
已邀请:
单击按钮后将其禁用,直到可以再次安全单击为止。
show()
是异步的。调用
show()
时,对话框不会立即出现。稍后会发生。     

要回复问题请先登录注册