私のAndroidアプリケーションでは、ボタンのonclickでスレッドを開始しました。スレッドは正常に機能しています。
最初の応答を受信する前に、ユーザーが同じボタンを再度クリックしないようにしたい。別のスレッドが開始されます。アンドロイドでのスレッドとイベントの処理を手伝ってください。
私のAndroidアプリケーションでは、ボタンのonclickでスレッドを開始しました。スレッドは正常に機能しています。
最初の応答を受信する前に、ユーザーが同じボタンを再度クリックしないようにしたい。別のスレッドが開始されます。アンドロイドでのスレッドとイベントの処理を手伝ってください。
次のようなブール変数を追加できます
isFirstThreadEnded = false;
メソッドを追加します
public void onFirstThreadEnded {
isFirstThreadEnded = true;
}
そして、スレッドが最初のラウンドを終了したときに、このメソッドを呼び出すようにします。onClickイベントで、実行する前にその値がtrueであるかどうかを確認します。
それは単なる罪であり、最初のスレッドがロードされる前に最初のクリックを処理するためにもう少し複雑にする必要がありますが、それは一般的な考え方です
例:
あなたのスレッドで:
private IntentService myIntentService;
public MyThread (IntentService intentService) {
myIntentService = intentService;
}
@Override
public void run()
{
//do your thread stuff
//when finished call onFirstThreadEnded inside myIntentService
somecode()
myIntentService.onFirstThreadEnded();
}
IntentServiceで:
private boolean isFirstThreadEnded = false;
public void startThread()
{
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isFirstThreaEnded)
new MyThread(this).start();
});
}
public void onFirstThreadEnded()
{
isFirstThreadEnded = true;
}
それはそのようなものでなければなりません...しかし、isFirstThreadEndedのデフォルト値がfalseであるため、実行中の最初のスレッドを処理する必要があります。
ユーザーがボタンをクリックすると、を使用してボタンを無効にしbutton.setEnabled(false)
、スレッドの最後でを使用してボタンを有効にします。button.setEnabled(true)
これがお役に立てば幸いです
スレッドの「1つの」インスタンスのみを開くことができるようにすることもできます。このためには、次のことを行う必要があります。
public class ThreadClass{
private static ThreadClass instance;
public static ThreadClass getInstance(){
if(instance == null){
instance = new ThreadClass();
}
return instance;
}
private ThreadClass(){
//Set the constructor to private
}
}
次に、トレッドインスタンスにアクセスできます。
private newThread= ThreadClass.getInstance();
したがって、このスレッドのインスタンスが1つだけ存在することも保証されます。