Help with AsyncTask and progressbar

0

I connect to the SQL Server 9 database 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 I receive the values, because I created a AsyncTask to receive the values but it is looped. at the end of the process. Someone could help me and tell me where I'm wrong (I've just started in this area and I'm kind of lost)

Below is my code.

My connection class:

ConexaoDao.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 search 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 using AsyncTask (if it fails the connection it goes on this screen until it gives me a return or if it's ok it gives me the fast 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, but at the beginning of the process he stops us at 25% and when I click on the screen he returns me an error, "Barbacena is not responding. I took the while because it was looping even with the end of the process

public class Act_Poco_Pombal extends AppCompatActivity implements View.OnClickListener {     private Button btnClose;     private TextView tvCommunicationName;     private ImageView ImgSinal;     private ImageView ImgStatus;     private TextView tvNomeStatus;     private TextView tvNomePresenca;     private ImageView ImgPresenca;     private TextView tvNomeFalha;     private ImageView Imgfalha;     private TextView tvNomeEnergy;     private ImageView ImgEnergy;

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

    
asked by anonymous 05.07.2016 / 23:40

1 answer

0

Viewing your error now is easy to identify, Only the original Thread that create a view can touch it's views

This happens because AsyncTask runs outside the UI Thread, that is, anything that happens on it can not affect the thread that is visible to the user.

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

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

There is a way to use runOnUiThread and force this interaction, however, it can cause other problems and runs away from the purpose of using AsyncTask.

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

Then the steps are:

  • Change the return type of method doInBackground to String[] .
  • Change in class parameters Process from Integer to String[]
  • Place your variables in a String []
  • Change the data type from onPostExecute to String []
  • Receive these variables in onPostExecute , make comparisons and make changes in UI
  • (Note: Changing the return type from doInBackground to the IDE will already indicate where the type is not right, this can help you to leave the 3 points with the right return.)

        
    07.07.2016 / 19:52