0

Android 開発者として、ユーザーがすばやく繰り返しボタンを連打する状況を処理する責任はありますか? それとも、これはユーザーの悪用と見なされますか? バックエンドのデータの観点からは、悪いことは何も起こりません。

選択するとサーバー呼び出しを行うボタンがあります。サーバーが応答すると、(ハンドラーを使用して) 返されたメッセージからアクティビティが生成されます。場合によっては、ユーザーがボタンを繰り返し押すと、重複したアクティビティがスタックし始め、ユーザー エクスペリエンスが低下する可能性があります (つまり、ユーザーは前の画面に戻るために [戻る] ボタンを複数回押す必要がある場合があります)。

編集:いくつかの詳細を省略しました。現在、サーバーの応答を待っている間、スピナーダイアログが表示されています。これにより、すべてのクリックが傍受されます。問題は、場合によっては、スピナーを閉じてから新しいアクティビティを開始するまでの時間が長くなり、ユーザーがさらにクリックできるようになることです。

現在、ボタンを無効にしていますが、ちょっとしたハックのように思えますが、もっと良い解決策があるかもしれません.

4

4 に答える 4

6

ユーザーがすばやく繰り返しボタンを押す状況を処理する責任はありますか?

通常、はい。

それとも、これはユーザーの悪用と見なされますか?

重要なのはユーザーの意見であり、ユーザーはこれをアプリの「悪用」とは見なさない可能性があります。

サーバーが応答すると、(ハンドラーを使用して) 返されたメッセージからアクティビティが生成されます。私

特にサーバーが応答しない可能性があるため、このような遅延の後にアクティビティを開始しないでください。

場合によっては、ユーザーがボタンを繰り返し押すと、重複したアクティビティがスタックし始め、ユーザー エクスペリエンスが低下する可能性があります (つまり、ユーザーは前の画面に戻るために [戻る] ボタンを複数回押す必要がある場合があります)。

つまり、UI がユーザーをイライラさせているということです。解決策は、より優れた UI を作成することです。

于 2012-12-07T16:19:55.157 に答える
5

実行に時間がかかる操作を開始するときは、 を表示しProgressDialog、タスクが完了したら閉じることをお勧めします。

private ProgressDialog mProgressDialog;

...

mProgressDialog = new ProgressDialog(context);
mProgressDialog.setIndeterminate(true);
mProgressDialog.setMessage("Loading...");
mProgressDialog.show();

...

mProgressDialog.dismiss();
于 2012-12-07T16:26:01.040 に答える
1

あなたの意図が何であるかに依存します。実行中のプロセス全体で 2 回クリックすることを禁止しようとしていますか? または、すばやくクリックできないようにしますか。

最初のケースでは、最初のクリック後に使用してボタンを無効にするだけmyButton.setEnabled(false);です。

一定期間無効にする場合は、 if および else on を使用しますOnClick。これを待機機能と組み合わせます。

何かのようなもの:

public void Sleeper() {
  myButton.setEnabled(false);
  wait(time);
  myButton.setEnabled(true):
}
于 2012-12-07T16:28:52.373 に答える
1

btn.setEnabled(false)最初のプレス後の簡単なソリューション。必要に応じて再度有効にします。

あなたの質問に関する限り:

Android 開発者として、ユーザーがすばやく繰り返しボタンを連打する状況を処理する責任はありますか?

ユーザーは、アプリを悪用すると期待どおりに動作しない可能性があることを認識するのに十分賢いと思います。明らかに、この問題を軽減するために独自の手法を使用できますが、必要に応じて.

于 2012-12-07T16:17:48.790 に答える