Help with Asynctask and progressbar

Asked

Viewed 786 times

0

I connect to the database SQL Server 9 and I can connect to it. I made a Connection DAO and a screen to receive the values.

I have a problem on the screen where you receive the values, because I created a AsyncTask to receive the values but the same stays in loop. at the end of the process. someone could help me and tell me where I’m going wrong (I’ve started a little bit in this area and I’m a little lost)

Follow my code below.

My kind of connection:

Connectiondao.java

public class ConexaoDao {
    @SuppressLint("NewApi")
    public Connection dbConnect(ObjetoConexao objConexao) {
        StrictMode.ThreadPolicy policy = new
        StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        Connection conn = null;
        String connectionUrl = null;
        try {
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            connectionUrl = "jdbc:jtds:sqlserver://" +
            objConexao.db_connect_string + ";" +
            "databaseName=" + objConexao.db_name + ";user=" +objConexao.db_userid + ";password=" + objConexao.db_password + ";";
            conn = DriverManager.getConnection(connectionUrl);
        }
        catch (Exception e) {
            System.out.println("Problemas ao conectar com o banco de dados: " );
        }


        return conn;
    }
}

My research class:

Dao__pcpombal.java

public class Dao__PcPombal extends Context{

    public String nomeTabela() {

        String nomeResTorres = "";
        ConexaoDao conexao = new ConexaoDao();
        ObjetoConexao objConexao = new ObjetoConexao();
        objConexao.db_connect_string = "ronaldesantos.hopto.org:1433";
        objConexao.db_name = "Barbacena2";
        objConexao.db_userid = "sa";
        objConexao.db_password = "flextelecom";
        Connection conn = conexao.dbConnect(objConexao);


        if (conn == null){
            nomeResTorres = "Não foi possivel se conectar ao banco de dados";
        } else
            if (conn != null) 
            try {
                Statement statement = conn.createStatement();
                String queryString = "select TOP 1 Area ,Source,Message from Alarmes Where AREA = 'POÇO POMBAL' AND Source ='xo_Alarmes.Falta_Energia' order By E3TimeStamp DESC ";

                ResultSet rs;
                rs = statement.executeQuery(queryString);

                if (rs.next()) {
                    nomeResTorres = rs.getString("Message");
                }
            } catch (SQLException e) {
                nomeResTorres = e.getMessage();
            }

        return nomeResTorres ;
    }



    public String nomeTabela2() {
        String nomeResTorres2 = "";
        ConexaoDao conexao = new ConexaoDao();
        ObjetoConexao objConexao = new ObjetoConexao();
        objConexao.db_connect_string = "ronaldesantos.hopto.org:1433";
        objConexao.db_name = "Barbacena2";
        objConexao.db_userid = "sa";
        objConexao.db_password = "flextelecom";
        Connection conn = conexao.dbConnect(objConexao);

        if (conn == null){
            nomeResTorres2 = "Não foi possivel se conectar ao banco de dados";
        } else
            if (conn != null) 
                try {
                    Statement statement = conn.createStatement();
                    String queryString = "select TOP 1 Code from Tbl_Comunicacao_Pc_Pombal where Situacao = 'Recepção (RX) - Aguardando' or Situacao = 'Recepção (RX) - OK' or Situacao = 'Recepção (RX) - Erro' order By E3TimeStamp DESC ";
                    ResultSet rs;

                    rs = statement.executeQuery(queryString);


                    if (rs.next()) {
                        nomeResTorres2 = rs.getString("Code");

                        if (nomeResTorres2.equals("255")) {
                            nomeResTorres2 = "Aguardando Recepção";
                        } else if (nomeResTorres2.equals("0")) {
                            nomeResTorres2 = "Recepção OK";
                        } else if (nomeResTorres2.equals("4")) {
                            nomeResTorres2 = "Recepção OK";
                        } else if (nomeResTorres2.equals("1")) {
                            nomeResTorres2 = "Falha na Recepção";
                        }
                    }
                } catch (SQLException e) {
                    nomeResTorres2 = e.getMessage();
                }

        return ""+ nomeResTorres2;
    }


    public String nomeTabela3() {
        String nomeResTorres3 = "";
        ConexaoDao conexao = new ConexaoDao();
        ObjetoConexao objConexao = new ObjetoConexao();
        objConexao.db_connect_string = "ronaldesantos.hopto.org:1433";
        objConexao.db_name = "Barbacena2";
        objConexao.db_userid = "sa";
        objConexao.db_password = "flextelecom";
        Connection conn = conexao.dbConnect(objConexao);




        if (conn == null){

            nomeResTorres3 = "Não foi possivel se conectar ao banco de dados";

        } else
            if (conn != null) 
                try {
                    Statement statement = conn.createStatement();
                    String queryString = "select TOP 1 Area,Source,Message from Alarmes Where AREA = 'POÇO POMBAL' AND Source ='xo_Alarmes.Presenca' order By E3TimeStamp DESC ";
                    ResultSet rs;

                    rs = statement.executeQuery(queryString);



                    if (rs.next()) {

                        nomeResTorres3 = rs.getString("Message");
                    }

                } catch (SQLException e) {
                    nomeResTorres3 = e.getMessage();
                }

        return ""+ nomeResTorres3;
    }

    public String nomeTabela5() {
        String nomeResTorres5 = "";
        ConexaoDao conexao = new ConexaoDao();
        ObjetoConexao objConexao = new ObjetoConexao();
        objConexao.db_connect_string = "ronaldesantos.hopto.org:1433";
        objConexao.db_name = "Barbacena2";
        objConexao.db_userid = "sa";
        objConexao.db_password = "flextelecom";
        Connection conn = conexao.dbConnect(objConexao);



        if (conn == null){
            nomeResTorres5 = "Não foi possivel se conectar ao banco de dados";
        } else

        if (conn != null) 
            try {
                Statement statement = conn.createStatement();
                String queryString = "select TOP 1 Area ,Source,Message from Alarmes Where AREA = 'POÇO POMBAL' AND Source ='xo_Alarmes.Sobrecarga' order By E3TimeStamp DESC ";
                ResultSet rs;

                rs = statement.executeQuery(queryString);


                if (rs.next()) {
                    nomeResTorres5 = rs.getString("Message");
                }

            } catch (SQLException e) {
                nomeResTorres5 = e.getMessage();
            }

        return "" + nomeResTorres5;
    }

    public String nomeTabela6() {
        String nomeResTorres6 = "";
        ConexaoDao conexao = new ConexaoDao();
        ObjetoConexao objConexao = new ObjetoConexao();
        objConexao.db_connect_string = "ronaldesantos.hopto.org:1433";
        objConexao.db_name = "Barbacena2";
        objConexao.db_userid = "sa";
        objConexao.db_password = "flextelecom";
        Connection conn = conexao.dbConnect(objConexao);



        if (conn == null){
            nomeResTorres6 = "Não foi possivel se conectar ao banco de dados";
        } else
            if (conn != null) 
                try {
                    Statement statement = conn.createStatement();
                    String queryString = "select TOP 1 Estado from Tbl_Acionamentos_Pc_Pombal order By E3TimeStamp DESC ";
                    ResultSet rs;

                    rs = statement.executeQuery(queryString);


                    if (rs.next()) {
                        nomeResTorres6 = rs.getString("Estado");
                    }

                } catch (SQLException e) {
                    nomeResTorres6 = e.getMessage();
                }

        return "" + nomeResTorres6;
    }
}

And the part where I’m wearing the AsyncTask (If you fail the connection it enters this screen until give me a return or if it is ok it gives me the quick return)

Act_poco_pombal.java

public class Act_Poco_Pombal extends AppCompatActivity implements View.OnClickListener {
    private Button btnFechar;
    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;



    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);
        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);
        Processo processo = new Processo(this);
        processo.execute(3000, 2000, 4000);

    }

    public class Processo extends AsyncTask<Integer, String, Integer> {

        private ProgressDialog progress;
        private Context context;

        public Processo(Context context) {
            this.context = context;
        }

        @Override
        protected void onPreExecute() {
            //Cria novo um ProgressDialogo e exibe
            progress = new ProgressDialog(context);
            progress.setMessage("conecatando-se ao banco de dados");
            progress.show();
        }

        @Override
        protected Integer doInBackground(Integer... paramss) {
            for (int i = 0; i < paramss.length; i++) {
                try {
                    //Simula processo...
                    Thread.sleep(paramss[i]);

                    //Atualiza a interface através do onProgressUpdate
                    publishProgress(i + "...");

                    Dao__PcPombal dao__pcPomball= new Dao__PcPombal();
                    Dao__PcPombal dao__pcPombal2= new Dao__PcPombal();
                    Dao__PcPombal dao__pcPombal3= new Dao__PcPombal();
                    Dao__PcPombal dao__pcPombal4= new Dao__PcPombal();
                    Dao__PcPombal dao__pcPombal5= new Dao__PcPombal();

                    String nomeEnergia = dao__pcPomball.nomeTabela();
                    String nomeComunicacao = dao__pcPombal2.nomeTabela2();
                    String nomePresenca = dao__pcPombal3.nomeTabela3();
                    String nomeFalha = dao__pcPombal4.nomeTabela5();
                    String nomeAcionamento = dao__pcPombal5.nomeTabela6();

                    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("#FF60FB07"));
                        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("#FF60FB07"));
                        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("#FF60FB07"));
                        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("#FF60FB07"));
                        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("#FF60FB07"));
                        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);
                    }




                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            return 1;
        }

        @Override
        protected void onPostExecute(Integer result) {
            //Cancela progressDialogo
            progress.dismiss();
        }

        @Override
        protected void onProgressUpdate(String... values) {
            //Atualiza mensagem
            progress.setMessage(values[0]);
        }
    }

    @Override
    public void onClick (View v){
        finish();
    }

}

Lucas, I did as you said, only when starting the process it stops at 25% and when, I click on the screen it returns me an error, "Barbacena isn’t respondig. do you whant to close it? - remembering that I took the while because it was on loop even with the end of the process

public class Act_poco_pombal extends Appcompatactivity Implements View.Onclicklistener { private button btnFechar; Private Textview tvNomeCommunication; Private Imageview Imgsinal; Private imageview Imgstatus; private Textview tvNomeStatus; Private Textview tvNomePresenca; Private Imageview Imgpresenca; Private Textview tvName Private imageview Imgfalha; Private Textview tvNomeEnergy; private imageview Imgenergia;

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);
    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);
    TextView texto = (TextView) findViewById(R.id.texto);

    new MinhaTask(this, progress, texto).execute();

}


    public class MinhaTask extends AsyncTask<Object, Object, String> {

       private ProgressBar progressBar;
       private TextView texto;
        private int total = 0;
        private int PROGRESSO = 25;


        public MinhaTask(Context context, ProgressBar progressBar, TextView texto) {

            this.progressBar = progressBar;
            this.texto = texto;
        }

        @Override
        protected void onPreExecute() {
           texto.setText("0%");
            super.onPreExecute();

            tvNomeComunicacao.setText("Conectando-se ao banco de dados");
            tvNomeEnergia.setText("Conectando-se ao banco de dados");
            tvNomeFalha.setText("Conectando-se ao banco de dados");
            tvNomePresenca.setText("Conectando-se ao banco de dados");
            tvNomeStatus.setText("Conectando-se ao banco de dados");
        }

        @Override
        protected String doInBackground(Object... params) {


                try {

                    Thread.sleep(1000);




                    for (int i = 0; i <= params.length; i++) {
                            publishProgress();
                            Thread.sleep(1000);



                            }


                    }catch(InterruptedException e){
                        e.printStackTrace();
                    }



            return null;
        }


        @Override
        protected void onProgressUpdate(Object... values) {



                total += PROGRESSO;
                progressBar.incrementProgressBy(PROGRESSO);
                texto.setText(total + "%");




            super.onProgressUpdate(values);
        }

        @Override
        protected void onPostExecute(String result) {




            Dao__PcPombal dao__pcPomball = new Dao__PcPombal();
            Dao__PcPombal dao__pcPombal2 = new Dao__PcPombal();
            Dao__PcPombal dao__pcPombal3 = new Dao__PcPombal();
            Dao__PcPombal dao__pcPombal4 = new Dao__PcPombal();
            Dao__PcPombal dao__pcPombal5 = new Dao__PcPombal();

            String nomeEnergia = dao__pcPomball.nomeTabela();
            String nomeComunicacao = dao__pcPombal2.nomeTabela2();
            String nomePresenca = dao__pcPombal3.nomeTabela3();
            String nomeFalha = dao__pcPombal4.nomeTabela5();
            String nomeAcionamento = dao__pcPombal5.nomeTabela6();

            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);
           texto.setText("Tarefa concluída");
            texto.setGravity(Gravity.CENTER_HORIZONTAL);

            super.onPostExecute(result);

        }

    }

look at the error inserir a descrição da imagem aqui

  • Friend, see if this question helps you in any way: http://answall.com/questions/130867/extraindo-arquivo-com-progressdialog

  • In case of error it enters a Loop in this for ? What kind of error does this happen

  • Try to put all your logic of doInBackground inside that while: while(!isCancelled())

  • Lucas Good Morning, I put this While inside theInBackground? after the loops it gives an error and closes the screen

  • this, when an error occurs, normally the Async is canceled. Then it would be something like protected Integer doInBackground(Integer... paramss) { while(!isCancelled()){&#xA; for (int i = 0; i < paramss.length; i++) { //sua lógica}}

  • If possible edit with the error that occurs

  • Lucas, Good evening, I made an issue there

  • 2

    @Ronaldosantos Please do not use screenshots to display the error. Copy and paste as text to help others who will have the same problem finding this question and allow comprehension by screen reader users.

Show 3 more comments

1 answer

0

Seeing your mistake now made it easy to identify, Only the original Thread that create a view can touch it's views

This is because Asynctask runs outside the Thread UI, meaning everything that happens in it cannot affect the thread that is visible to the user.

In your code you change colors, text, etc.. of Views that are in the UI Thread and this generates this exception, of a thread "invading" the space of the other.

When using Asynctask any and all user interaction should be done in the methods onPreExecute and onPostExecute.

Is there a way to use the runOnUiThread and force this interaction, however, can cause other problems and runs away a little from the purpose of using Asynctask.

My suggestion then is instead to make the comparisons on doInBackground , return the 4 variables you use in the comparisons and treat this in the onPostExecute.

So the steps are :

  1. Change method return type doInBackground for String[].
  2. Change in Process class parameters Integer for String[]
  3. Place your variables in a String[]
  4. Change the data type of onPostExecute for String[]
  5. Receive these variables on onPostExecute,make comparisons and make changes in the UI

(Note: When changing the return type of the doInBackground the IDE will already accuse where the guy is not right, it may help you to leave the 3 points with the right return.)

  • Good Morning . I did According to your suggestion ( it is in edited). only when starting the process it is 25% but the process is being carried out. and another thing when clicking on the screen, gives an error and closes screen . Barbacena isn’t responding. do you whant to close it?

  • @Ronaldosantos This is probably happening because of Thread.Sleep, you lock the process and the system understands that it is locked. As for the touch, maybe it is for the same reason, however, when touching it will cancel the process, in this case the ideal is to treat the onCancelled or put the options not to cancel in the popup dialog

Browser other questions tagged

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