いくつかの作業を行うためにバックグラウンドスレッドを開始するボタンがあり、ProgressDialogを使用して、その作業の実行中にユーザーがそのボタン(またはその他のUI要素)をダブルクリックしないようにしようとしています。ボタンonClickコードで最初に行うことは、画面を引き継ぐ進行状況ダイアログを表示することです。私が見ている問題は、このボタンをすばやくタップすると、ProgressDialogが表示される前に2回以上押すと登録されることがあるということです。これにより、ProgressDialogが実際に表示される前にProgressDialog.show()が返されていると思います。
誰かがこれを確認できますか?また、この動作を変更する方法、または少なくともダイアログが実際に表示されたときに通知を受け取る方法はありますか?Dialog.onStart()を見ましたが、javadocを指定すると、Dialogが実際に表示される前に呼び出されたように見えます...
更新:一般的にこの問題を解決する良い方法はないようですが、私の作業が外部スレッドによって行われ、実行する作業の量がすべての時間よりも長くかかる私の状況では、次のように機能します処理するボタンのクリック:
void myOnClickHandler() {
if(myButton.isEnabled()) {
myButton.setEnabled(False);
// do work here
// setEnabled(true) is invoked at the end of my spawned thread's run().
}
}