Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Re: ProgressDialog trabando emn AsyncTask

Thiago,

Dessa forma, eu tenho que salvar no background tb e no onPostExecute chamar a outra AsyncTask?

É bem "aceito" salvar as coisas no doInBackground?

Em segunda-feira, 16 de novembro de 2015 14:08:34 UTC-3, Thiago escreveu:
O onPostExecute da AsyncTask já é executado na main thread. Me parece que você queria que ele estivesse sendo executado em background ainda (só isso pra explicar o porque tem um Handler junto com a AsyncTask).

Por isso está travando. O seu save no banco de dados está sendo feito na main thread.

2015-11-12 9:36 GMT-02:00 Leonardo Benedeti <leonardo...@gmail.com>:
Fala cara,

O google já mudou o modo de fazer requisições amigo. 
Recomendo que procure pela lib Volley, tem documentação dela no developer.android.com porem tem muitos exemplos otimos na internet já. Vale a pena mudar, ela é bem mais rapida que async task.
E também recomendo uso de progressBar, o widget mesmo. Tudo fica mais simples e com menos código. 

Espero ter ajudado. 

Abraço


Em quarta-feira, 11 de novembro de 2015 17:14:38 UTC-2, kalinn...@gmail.com escreveu:
Gente,

Sempre que eu vou receber dados do servidor via json, o progressDialog meio que trava no momento em que eu vou salvar esses dados no banco de dados (estou usando Active Android).

Alguém saberia me dizer como corrigir isso e fazer com que ele fique em execução?

*O processo de baixar e salvar funciona perfeitamente. O problema é só esse ProgressDialog que trava por um momento

public class LoginActivity extends AppCompatActivity implements View.OnClickListener, AsyncResponse{

    private ProgressDialog pd;
    private EditText etMatricula;
    private EditText etSenha;
    private Button btLogin;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login_activity);
       
        iniciar_componentes();

    }

    private void iniciar_componentes() {
        etMatricula = (EditText) findViewById(R.id.et_matricula);
        etSenha = (EditText) findViewById(R.id.et_senha);
        btLogin = (Button) findViewById(R.id.bt_login);

        btLogin.setOnClickListener(this);       
   }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.bt_login:

                String matricula = etMatricula.getText().toString();
                String senha = etSenha.getText().toString();

                if(matricula.equals("") || senha.equals("")){
                    Util.showAlertDialog(LoginActivity.this, R.string.matricula_senha_empty);
                    return;
                }

                pd = new ProgressDialog(this);
                pd.setMessage(getResources().getString(R.string.login));
                pd.show();

                try {
                    JSONObject Jobject = new JSONObject();
                    Jobject.put("matricula", matricula);
                    Jobject.put("senha", senha);
                   
                    MinhaAsyncTask task = new MinhaAsyncTask(LoginActivity.this);
                    task.execute(Constants.LOGIN_URL, Jobject);

                }catch(Exception e){
                    Log.d(Constants.TAG, e.getMessage(), e.getCause());
                }
                break;
        }
    }

    public Handler handler = new Handler() {

        public void handleMessage(android.os.Message msg) {
            if ((pd != null) && (pd.isShowing()))
                pd.dismiss();
            switch (msg.what) {
                case Constants.LOGIN_OK:
                    startActivity(new Intent(LoginActivity.this, HomeActivity.class));
                    finish();
                    break;
                case Constants.LOGIN_FAIL:
                    Util.showAlertDialog(LoginActivity.this, R.string.login_fail);
                    break;               
            }
        };

    };

    @Override
    public void processFinish(String output) {
        if (output != null) {
                try {
                    JSONObject Jobject = new JSONObject(output);
                    String result_login = Jobject.getString("result");
                    if (result_login.equalsIgnoreCase("OK")) {
                        JSONArray Jarray = Jobject.getJSONArray("servicos");
                        for (int i = 0; i < Jarray.length(); i++) {
                            Servicos servico = new Servicos();
                            servico.id =  Jarray.getJSONObject(i).getInt("id");
                            servico.descricao = Jarray.getJSONObject(i).getInt("descricao"); 
                            servico.save();
                        }                       
                       
handler.sendEmptyMessage(Constants.LOGIN_OK);                

                    } else {
                       
handler.sendEmptyMessage(Constants.LOGIN_FAIL);
                    }
                }
catch (Exception e) {
                   
handler.sendEmptyMessage(Constants.LOGIN_FAIL);
              }

        }
else {
           
handler.sendEmptyMessage(Constants.LOGIN_FAIL);
        }
    }

}

public class MinhaAsyncTask extends AsyncTask {

private AsyncResponse response;

public MinhaAsyncTask(AsyncResponse response){
this.response = response;
}

@Override
protected Object doInBackground(Object[] params) {
HttpCore core = new HttpCore();
try {
return core.doPostRequest(params[0].toString(), params[1].toString());

}catch(ConnectException e){
return Constants.CONNECTION_ERRO;
}catch(Exception e){
Log.d(Constants.TAG, e.getMessage(), e.getCause());
}

return null;
}

@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
try {
response.processFinish(o.toString());
}catch(Exception e){
response.processFinish(null);
}
}
}


--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Thiago Moura
Software Engineer
+55 (11) 9 8178 1763

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário