Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Re: ProgressDialog

Thiago fiz o teste e realmente o progress fica rodando apesar de passar pelo trecho onde rodo  dismiss;


Segue o trecho do código onde eu faço todo o tratamento do ProgressDialog:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
private class ProgressTask extends AsyncTask<Void, Void, Boolean> {
 
    public ProgressTask() {
    }
    @Override
    protected void onPreExecute() {
        dialogo.show();
        Log.d("ListarProdutos (294)","dialogo.show()");
    }
    @Override
    protected void onPostExecute(final Boolean success) {
        dialogo.dismiss();
        dialogo.cancel();
        if (success){Log.d("ListarProdutos (302)","dialogo.dismiss()");}
    }
 
    @Override
    protected Boolean doInBackground(Void... params) {
        BigInteger produto_id;
        Log.d("ListarProdutos (308)","doInBackground");
        if (cod_barras != null){
            produto_id = new BigInteger(cod_barras);
        } else{
            produto_id = produto_menu.getId();
        }
        try{
            if (WebService.Conectado(getBaseContext())){
                WebService wb = new WebService();
                if (wb.getProduto(getBaseContext(), produto_id)){
                    produto_vo = produto_dao.get(produto_id);
                    if (produto_vo.getDescricao().equalsIgnoreCase("Nenhum produto localizado.")){
                        produto_vo.setDescricao(null);
                    } else {
                        if(wb.getPreco(getBaseContext(), produto_id, loja.toString())){
                        }
                    }
                    itEditar.putExtra("loja", loja);
                    itEditar.putExtra("cod_barras", produto_id.toString());
                    dialogo.dismiss();
                    dialogo.cancel();
                    Log.d("ListarProdutos (329)","dialogo.dismiss()");
                    //startActivity(itEditar);
                } else {
                    mToast.show();
                }
            } else {
                mToast.show();
            }
            return true;
         } catch (Exception e){
            e.printStackTrace();
            return false;
         }
      }
}

Notem que eu inclui algumas linhas de log indicando a linha do código onde está naquele momento e o que está fazendo.
Agora o resultado do log quando executa esse trecho onde da pra ver que passou pelos dois locais onde faço o dismiss:

05-03 22:56:44.778: D/ListarProdutos (294)(10304): dialogo.show()
05-03 22:56:44.778: D/ListarProdutos (222)(10304): loja: 1 cod_barras: 7791293990583
05-03 22:56:44.778: D/ListarProdutos (308)(10304): doInBackground
05-03 22:56:44.818: D/WebService (29)(10304): Status de conexão 3G: true
05-03 22:56:45.088: D/dalvikvm(10304): GC_EXTERNAL_ALLOC freed 1433K, 58% free 3688K/8775K, external 3797K/3815K, paused 142ms
05-03 22:56:45.669: D/WebService (362) while(10304): Force break when line length < 3: 0
05-03 22:56:45.979: D/WebService (309)(10304): Force break when line length < 3: 0
05-03 22:56:45.989: D/ListarProdutos (329)(10304): dialogo.dismiss()
05-03 22:56:45.989: D/ListarProdutos (302)(10304): dialogo.dismiss()


Agora o log quando eu escolho um item da lista:

05-03 22:56:11.656: D/ListarProdutos (294)(10304): dialogo.show()
05-03 22:56:11.666: D/ListarProdutos (308)(10304): doInBackground
05-03 22:56:11.836: D/WebService (29)(10304): Status de conexão 3G: true
05-03 22:56:12.657: D/WebService (362) while(10304): Force break when line length < 3: 0
05-03 22:56:12.957: D/WebService (309)(10304): Force break when line length < 3: 0
05-03 22:56:12.967: D/ListarProdutos (329)(10304): dialogo.dismiss()
05-03 22:56:12.987: D/ListarProdutos (302)(10304): dialogo.dismiss()

A unica diferença é esse dalvikvm que deve ser justamente por causa da chamada da camera.

Se alguém tiver alguma ideia agradeço.


Maicon Strey
Novo Hamburgo - RS - Brasil
------------------
http://maicon.strey.nom.br/blog/ 
http://maicon.strey.nom.br/blog/netiqueta/ 
Linux user: #525086
------------------



2012/5/3 Maicon Strey <mstrey@gmail.com>
pois eh.
S[o tenho um Dialog na tela.
Eu coloquei um Log.d logo abaixo do dismiss e escreveu no log entao passou por ali.

Vou tentar isso de tirar o startactivity hoje a noite e depois digo o que aconteceu.

Maicon Strey
Novo Hamburgo - RS - Brasil
------------------
http://maicon.strey.nom.br/blog/ 
http://maicon.strey.nom.br/blog/netiqueta/ 
Linux user: #525086
------------------



2012/5/3 Thiago Lopes Rosa <thiago.rosa@gmail.com>
Você tem certeza que está passando pelo dismiss, mas você tem certeza que está fazendo dismiss do dialog certo?
Experimentou não ir para a próxima tela (tira o startactivity) e ver se o dialog fecha?


Thiago


2012/5/3 Maicon Strey <mstrey@gmail.com>
Pessoal,
Funcionou legal com asyncTask mas agora estou com a seguinte situação:

em uma das tela do sistema tenho uma lista de produtos e um botão para fazer a leitura de um código de barras para o usuário incluir um novo produto. Se ele seleciona um produto da lista é direcionado para  a tela de cadastro do produto e se ele pressionar o botão voltar o sistema retorna normal pra tela de lista.

porém se ele faz a leitura de um código de barras ai ocorre um comportamento estranho.
A tela de lista de produtos chama o zxing pra fazer a leitura do código de barras. Eu pego o retorno através do onActivityResult e dai abro a progressDialog e consulto esse código na base online. após consultar direciono pra tela de cadastro já com os dados recuperados da web. Se o usuário pressionar voltar o sistema retorna pra tela de lista de produtos mas com a progressDialog aberta.

Já debuguei e tenho certeza que passa pelo trecho onde o progress é fechado ( dismiss() ) antes de ir pra próxima tela e também tenho certeza de que não entrou novamente no onActivityResult quando o usuários pressiona o voltar.

O estranho é que o erro só ocorre quando é feita leitura do código de barras mas o progressDialog também é utilizado quando um produto da lista é selecionado.

Se alguém tiver alguma dica agradeço.


Maicon Strey
Novo Hamburgo - RS - Brasil
------------------
http://maicon.strey.nom.br/blog/ 
http://maicon.strey.nom.br/blog/netiqueta/ 
Linux user: #525086
------------------



2012/5/1 Thiago Lopes Rosa <thiago.rosa@gmail.com>
Concordo, o AsyncTask é perfeito nesse caso!


Thiago


2012/5/1 lucasddaniel <lucasddaniel@gmail.com>
usa um AsyncTask.

On 30 abr, 23:08, Maicon Strey <mst...@gmail.com> wrote:
> Olá Pessoal,
> Estou tentando exibir um progressDialog enquanto minha aplicação faz uma
> consulta ao meu webservice. Sem isso parece que a aplicação está congelada.
> Tentei fazer de várias maneiras e na última meu código ficou conforme esse
> ai embaixo.
> Desta forma o comportamento que ocorre é:
> 1) Eu clico no botão de atualizar dados
> 2) app envia requisição ao site
> 3) site responde
> 4) app processa resposta
> 5) exibe progressdialog.
>
> Resumindo: quando ela é exibida não é mais necessária. Eu quero que ela
> seja exibida logo após eu clicar no botão de atualizar dados e que suma só
> depois de processar a resposta do site.
>
> Alguém tem alguma dica?
>
> **********
> ProgressDialog dialogo = new ProgressDialog(this);
> dialogo.setMessage("Sincronizando informações de produtos.");
> dialogo.setTitle("Sincronizando");
> dialogo.setCancelable(true);
> dialogo.setProgressStyle(ProgressDialog.STYLE_SPINNER);
> dialogo.show();
>
> closeContextMenu();
> new Thread(new Runnable() {
> public void run() {
> if (WebService.Conectado(getBaseContext())){
>  WebService wb = new WebService();
> if (wb.getProdutos(getBaseContext(), loja_menu.getId())){
>  Intent itProdutos = new Intent(getBaseContext(), ListarProdutos.class);
> itProdutos.putExtra("loja", loja_menu.getId());
>  dialogo.dismiss();
> startActivity(itProdutos);} else {
>
>  Toast.makeText(getBaseContext(), "Problemas na conexão.\n Tente
> novamente." , 5).show();}
>  }
> }
> });
>
> **********
>
> Maicon Strey
> Novo Hamburgo - RS - Brasil
> ------------------http://maicon.strey.nom.br/blog/http://maicon.strey.nom.br/blog/netiqueta/
> Linux user: #525086
> ------------------



--
Thiago Rosa




--
Thiago Rosa


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

0 comentários:

Postar um comentário