Witam.
Czy można przy okazji korzystania zAsyncTaska sprawdzić czy wątek, który przed chwilką właśnieuruchomiłem, poprzez naciśniecie przycisku, jeszcze się wykonuje?
Chciałbym to sprawdzać po to, żeby uchronić się przed tym, żeby nowy wątek nie powstał dopóki stary się nie zakończy.
Przedstawiam kawałek kodu:
package com.example.progressbarthreading;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
public class MainActivity extends AppCompatActivity {
Button bt_startujWatek;
ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt_startujWatek = findViewById(R.id.button);
progressBar = findViewById(R.id.progressBar);
progressBar.setProgress(100);
bt_startujWatek.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AsyncTask<String,String,String> watekAsynchroniczny = new AsyncTask<String, String, String>() {
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if(s.equals("done"))
{
Log.d("watek","skonczony");
}
}
@Override
protected String doInBackground(String... strings) {
int postep=100;
Log.d("watek","rozpoczety");
while(postep>0) {
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
postep=postep-1;
progressBar.setProgress(postep);
}
return "done";
}
};
watekAsynchroniczny.execute();
}
});
}
}
Teraz program działa tak, że tyle ile razy nacisnę przyciskbt_startujWatek tyle razy do jakby "kolejki wątków" dochodzą nowe i wykonują się jeden po drugim.
dodana zawartość
Chociażmożna by zablokować działania przycisku i już nie doda się w ten sposób kolejnego wątku do kolejki