Help To cancel Asynctask

1

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();
        }
    }
    
asked by anonymous 14.07.2016 / 20:16

1 answer

1

Speak Ronaldo,

You need to declare AsyncTask first:

private YourAsyncTask mTask;

To start it:

mTask = new YourAsyncTask().execute();

To force stop:

mTask.cancel(true);

Hugs.

    
14.07.2016 / 20:20