Good afternoon, I use this method to receive the result of a search, and implemented in the oncancelled code to stop my Asyntask, but the same not for the process, when I go to another screen do another search the previous process still continues , algume can help me, follow the code
package br.com.flextelecom.barbacena.Actions_Main;
import android.graphics.Color; import android.os.AsyncTask; import android.os.Bundle; import android.os.CountDownTimer; import android.os.Handler; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.View; import android.view.Menu; import android.view.MenuItem; import android.widget. ; import android.view. ; import android.content. *;
import br.com.flextelecom.barbacena.Conexoes_Banco.Dao__PcPombal; import br.com.flextelecom.barbacena.R;
public class Act_Poco_Pombal extends AppCompatActivity implements View.OnClickListener {
private Button btnFechar;
private Button btn_Atualizar;
private TextView tvNomeComunicacao;
private ImageView ImgSinal;
private ImageView ImgStatus;
private TextView tvNomeStatus;
private TextView tvNomePresenca;
private ImageView ImgPresenca;
private TextView tvNomeFalha;
private ImageView Imgfalha;
private TextView tvNomeEnergia;
private ImageView ImgEnergia;
TextView minutes, seconds;
Integer minutos = 3;
CountDownTimer timer;
MinhaTask mt;
final String LOG_TAG = "myLogs";
String Aguardanando = "Aguardando Recepção";
String Recepcao = "Recepção OK";
String Falha = "Falha na Recepção";
String PresencaAc = "Sensor Invasão Atuado";
String PresencaN = "Sensor Invasão Desarmado";
String FalhaAc = "Sobrecarga Motor";
String FalhaN = "Rearme Sobrecarga";
String StatusAc = "Ligado";
String StatusN = "Desligado";
String EnergiaAc = "Falta Enegia Eletrica";
String EnergiaN = "Enegia Eletrica Restabelecida";
String FalhaCon = "Não foi possivel se conectar ao banco de dados";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act__poco__pombal);
btnFechar = (Button) findViewById(R.id.btnFechar);
btnFechar.setOnClickListener(this);
btn_Atualizar = (Button) findViewById(R.id.btn_Atualizar);
btn_Atualizar.setOnClickListener(this);
tvNomeComunicacao = (TextView) findViewById(R.id.tvNomeComunicacao);
ImgSinal = (ImageView) findViewById(R.id.ImgSinal);
ImgStatus = (ImageView) findViewById(R.id.ImgStatus);
ImgPresenca = (ImageView) findViewById(R.id.ImgPresenca);
tvNomePresenca = (TextView) findViewById(R.id.tvNomePresenca);
Imgfalha = (ImageView) findViewById(R.id.ImgFalha);
tvNomeFalha = (TextView) findViewById(R.id.tvNomeFalha);
tvNomeStatus = (TextView) findViewById(R.id.tvNomeEstado);
ImgEnergia = (ImageView) findViewById(R.id.ImgEnergia);
tvNomeEnergia = (TextView) findViewById(R.id.tvNomeEnergia);
ProgressBar progress = (ProgressBar) findViewById(R.id.progress);
minutes = (TextView)findViewById(R.id.minutes);
seconds = (TextView)findViewById(R.id.seconds);
minutes.setText("" + minutos);
tvNomeComunicacao.setText("Conectando-se ao banco de dados");
tvNomeComunicacao.setTextColor(Color.parseColor("#FFFEED04"));
ImgSinal.setVisibility(View.INVISIBLE);
tvNomeEnergia.setText("Conectando-se ao banco de dados");
tvNomeEnergia.setTextColor(Color.parseColor("#FFFEED04"));
ImgEnergia.setVisibility(View.INVISIBLE);
tvNomeFalha.setText("Conectando-se ao banco de dados");
tvNomeFalha.setTextColor(Color.parseColor("#FFFEED04"));
Imgfalha.setVisibility(View.INVISIBLE);
tvNomePresenca.setText("Conectando-se ao banco de dados");
tvNomePresenca.setTextColor(Color.parseColor("#FFFEED04"));
ImgPresenca.setVisibility(View.INVISIBLE);
tvNomeStatus.setText("Conectando-se ao banco de dados");
tvNomeStatus.setTextColor(Color.parseColor("#FFFEED04"));
ImgStatus.setVisibility(View.INVISIBLE);
mt = new MinhaTask(this, progress) ;
mt.execute();
}
public class MinhaTask extends AsyncTask<Object, Object, String> {
private ProgressBar progressBar;
private int total = 0;
private int PROGRESSO = 25;
String nomeEnergia;
String nomeComunicacao;
String nomePresenca;
String nomeFalha;
String nomeAcionamento;
public MinhaTask(Context context, ProgressBar progressBar) {
this.progressBar = progressBar;
progressBar.getIndeterminateDrawable().setColorFilter(0xFF36F3DD, android.graphics.PorterDuff.Mode.MULTIPLY);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
Log.d(LOG_TAG, "Begin");
}
protected void onCancelled() {
super.onCancelled();
Log.d (LOG_TAG, "cancelar resultado:" + mt.cancel (false));
}
@Override
protected String doInBackground(Object... params) {
try {
Thread.sleep(1000);
for (int i = 0; i <= params.length; i++) {
publishProgress();
Thread.sleep(1000);
Dao__PcPombal dao__pcPombal = new Dao__PcPombal();
nomeEnergia = dao__pcPombal.nomeTabela();
nomeComunicacao = dao__pcPombal.nomeTabela2();
nomePresenca = dao__pcPombal.nomeTabela3();
nomeFalha = dao__pcPombal.nomeTabela5();
nomeAcionamento = dao__pcPombal.nomeTabela6();
if (isCancelled()) {
Log.d(LOG_TAG, "isCancelled: " + isCancelled());
break;
}
}
} catch (InterruptedException e) {
Log.d(LOG_TAG, "Interrupted");
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Object... values) {
total += PROGRESSO;
progressBar.incrementProgressBy(PROGRESSO);
super.onProgressUpdate(values);
tvNomeComunicacao.setText("Conectando-se ao banco de dados");
tvNomeComunicacao.setTextColor(Color.parseColor("#FFFEED04"));
ImgSinal.setVisibility(View.INVISIBLE);
tvNomeEnergia.setText("Conectando-se ao banco de dados");
tvNomeEnergia.setTextColor(Color.parseColor("#FFFEED04"));
ImgEnergia.setVisibility(View.INVISIBLE);
tvNomeFalha.setText("Conectando-se ao banco de dados");
tvNomeFalha.setTextColor(Color.parseColor("#FFFEED04"));
Imgfalha.setVisibility(View.INVISIBLE);
tvNomePresenca.setText("Conectando-se ao banco de dados");
tvNomePresenca.setTextColor(Color.parseColor("#FFFEED04"));
ImgPresenca.setVisibility(View.INVISIBLE);
tvNomeStatus.setText("Conectando-se ao banco de dados");
tvNomeStatus.setTextColor(Color.parseColor("#FFFEED04"));
ImgStatus.setVisibility(View.INVISIBLE);
}
@Override
protected void onPostExecute(String result) {
if (nomeComunicacao.equals(Aguardanando)) {
tvNomeComunicacao.setTextColor(Color.parseColor("#FFFEED04"));
tvNomeComunicacao.setText("" + "Aguardando Recepção");
ImgSinal.setImageResource(R.drawable.samarelo);
} else if (nomeComunicacao.equals(Recepcao)) {
tvNomeComunicacao.setTextColor(Color.parseColor("#FF60FB07"));
tvNomeComunicacao.setText("" + " Recepção OK");
ImgSinal.setImageResource(R.drawable.sverde);
} else if (nomeComunicacao.equals(Falha)) {
tvNomeComunicacao.setTextColor(Color.parseColor("#FFFC120E"));
tvNomeComunicacao.setText("" + "Falha na Recepção");
ImgSinal.setImageResource(R.drawable.svermelho);
} else if (nomeComunicacao.equals(FalhaCon)) {
tvNomeComunicacao.setTextColor(Color.parseColor("#FFFC120E"));
tvNomeComunicacao.setText("" + " Não foi possivel se conectar ao banco de dados");
}
if (nomePresenca.equals(PresencaN)) {
tvNomePresenca.setTextColor(Color.parseColor("#FF60FB07"));
tvNomePresenca.setText("" + " Sensor Invasão Desarmado");
ImgPresenca.setImageResource(R.drawable.presencaon);
} else if (nomePresenca.equals(PresencaAc)) {
tvNomePresenca.setTextColor(Color.parseColor("#FFFC120E"));
tvNomePresenca.setText("" + "Sensor Invasão Atuado");
ImgPresenca.setImageResource(R.drawable.presenca);
} else if (nomePresenca.equals(FalhaCon)) {
tvNomePresenca.setTextColor(Color.parseColor("#FFFC120E"));
tvNomePresenca.setText("" + " Não foi possivel se conectar ao banco de dados");
} else if (nomePresenca.isEmpty()) {
tvNomePresenca.setTextColor(Color.parseColor("#FF60FB07"));
tvNomePresenca.setText("" + " Sensor Invasão Desarmado");
ImgPresenca.setImageResource(R.drawable.presencaon);
}
if (nomeFalha.equals(FalhaN)) {
tvNomeFalha.setTextColor(Color.parseColor("#FF60FB07"));
tvNomeFalha.setText("" + " Rearme Falha");
} else if (nomeFalha.equals(FalhaAc)) {
tvNomeFalha.setTextColor(Color.parseColor("#FFFC120E"));
tvNomeFalha.setText("" + "Falha Motor");
Imgfalha.setImageResource(R.drawable.falhaon);
} else if (nomeFalha.equals(FalhaCon)) {
tvNomeFalha.setTextColor(Color.parseColor("#FFFC120E"));
tvNomeFalha.setText("" + " Não foi possivel se conectar ao banco de dados");
} else if (nomeFalha.isEmpty()) {
tvNomeFalha.setTextColor(Color.parseColor("#FF60FB07"));
tvNomeFalha.setText("" + " Rearme Falha");
}
if (nomeEnergia.equals(EnergiaN)) {
tvNomeEnergia.setTextColor(Color.parseColor("#FF60FB07"));
tvNomeEnergia.setText("" + " Enegia Eletrica Ok");
ImgEnergia.setImageResource(R.drawable.energiaon);
} else if (nomeEnergia.equals(EnergiaAc)) {
tvNomeEnergia.setTextColor(Color.parseColor("#FFFC120E"));
tvNomeEnergia.setText("" + "Falta Enegia Eletrica");
ImgEnergia.setImageResource(R.drawable.energiaoff);
} else if (nomeEnergia.equals(FalhaCon)) {
tvNomeEnergia.setTextColor(Color.parseColor("#FFFC120E"));
tvNomeEnergia.setText("" + " Não foi possivel se conectar ao banco de dados");
} else if (nomeEnergia.isEmpty()) {
tvNomeEnergia.setTextColor(Color.parseColor("#FF60FB07"));
tvNomeEnergia.setText("" + " Enegia Eletrica OK");
ImgEnergia.setImageResource(R.drawable.energiaon);
}
if (nomeAcionamento.equals(StatusN)) {
tvNomeStatus.setTextColor(Color.parseColor("#FFFC120E"));
tvNomeStatus.setText("" + " Poço Desligado");
ImgStatus.setImageResource(R.drawable.pocooff);
} else if (nomeAcionamento.equals(StatusAc)) {
tvNomeStatus.setTextColor(Color.parseColor("#FF60FB07"));
tvNomeStatus.setText("" + "Poço Ligado");
ImgStatus.setImageResource(R.drawable.pocon);
} else if (nomeAcionamento.equals(FalhaCon)) {
tvNomeStatus.setTextColor(Color.parseColor("#FFFC120E"));
tvNomeStatus.setText("" + " Não foi possivel se conectar ao banco de dados");
} else if (nomeAcionamento.isEmpty()) {
tvNomeStatus.setTextColor(Color.parseColor("#FFFC120E"));
tvNomeStatus.setText("" + " Poço Desligado");
ImgStatus.setImageResource(R.drawable.pocooff);
}
progressBar.setVisibility(ProgressBar.INVISIBLE);
startCounter();
super.onPostExecute(result);
Log.d(LOG_TAG, "End");
}
}
private void startCounter() {
timer = new CountDownTimer(61000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
if((millisUntilFinished / 1000) < 10){
seconds.setText("0" + (millisUntilFinished / 1000) );
}
else if((millisUntilFinished / 1000) == 61){
seconds.setText("00");
}
else{
seconds.setText("" + (millisUntilFinished / 1000) );
}
}
@Override
public void onFinish() {
if(minutos == 0){
timer.cancel();
Atualiza();
}
else{
minutos--;
if(minutos < 10){
minutes.setText("0" + minutos );
}
else{
minutes.setText("" + minutos );
}
startCounter();
}
}
}.start();
}
private void Atualiza() {
ProgressBar progress = (ProgressBar) findViewById(R.id.progress);
minutos = 3;
new MinhaTask(this, progress).execute();
}
public void onClick (View v) {
switch (v.getId()) {
case R.id.btn_Atualizar:
Atualiza();
case R.id.btnFechar:
mt.onCancelled();
mt.cancel(true);
mt.isCancelled();
break;
default:
break;
}
finish();
}
}