0

例: ボタンを取得しました。ボタンを押すと、API から画面にデータをフェッチする関数が呼び出されます。しかし、ユーザーがもう一度押しても関数がまだ実行中(処理中)の場合、関数の呼び出しを停止するにはどうすればよいですか。

ボタンを非表示にする代わりに、それを処理する方法はありますか? それを処理するためにスレッドを使用する必要がありますか? スレッドが生きているかどうかを確認するには?私はそれをよく知りません。対処方法の提案と例を教えてください。

私の悪い英語でごめんなさい。ありがとう。

4

3 に答える 3

0

呼び出している関数が同期されている場合、問題はないはずです。関数がスレッドを開始する場合、次のようにすることができます。

Thread mThrd = null;
public void func() {
    if(mThrd!=null && mThrd.isRunning()) {
        return;
    }

    mThrd = new Thread(/*the runnable that do the job*/);
    mThrd.start();
}

関数が「バックグラウンドで何かを実行する」だけのフレームワーク API である場合、それが実行されたかどうかを通知するメソッドがあったり、何らかのメソッドで結果を確認したりすることができます。お気に入り:

public void func() {
    if(checkDone()) {
        return;
    }
    callFrameworkAPI();
}
于 2013-04-09T04:00:16.923 に答える
0

ボタンを押すbooleanと回転するを作ります。truetrue の場合、メソッドの通常の機能を実行します。boolean次に、その人がボタンをもう一度押したときにそうしますfalse。false の場合は、やりたいことを実行するかbreak、何もしないようにしますreturn

于 2013-04-09T03:53:48.217 に答える
-1

関数を呼び出すときに、次の行を関数に追加します。これにより、ボタンが一度クリックされるとクリックできなくなります。

Button b1 = findViewById(R.id.button_name);
b1.setClickable(false);

APIフェッチが完了したら、おそらくあなたのケースでは関数の最後に、次の行を追加して、ボタンを再びクリックできるようにします。

b1.setClickable(true);
于 2013-04-09T04:25:19.607 に答える