Stop or cancel asynctask

Asked

Viewed 405 times

0

I made this code for my asynctask but the same does not work, it simply continues the process and not the error.

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();
    }
}
  • Could define doesn’t work? there is an error? or simply not to?

  • Good Morning Thiago, it simply continues the process and not error

  • the process that is within the protected String doInBackground(Object... params) hein

1 answer

0

To cancel/stop an Asynctask simply call the method Cancel

mt = new MinhaTask(this, progress) ;
mt.execute(); // Inicia a task
mt.cancel(true); // Cancela a task
  • I have to call the aynctasc again before canceling it even running?

  • From the moment you started your task, simply call the Cancel(true) method, to cancel it.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.