Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Handler ou AlarmManager, qual deles utilizar para resolver meu problema?

Fala Bruno,


2 pontos:

1)o AlarmManager deve ser usado  quando você quer disparar um evento em um futuro mais distante, quando o usuário provavelmente já terá desligado a tela do celular. Nesse caso o handler não funciona, pois ele não vai acordar a CPU no horário correto. Ele vai rodar só quando a CPU for acordada para alguma outra coisa e o handler estiver expirado. Com o AlarmManager você consegue acordar a CPU e daí vem o perigo e as recomendações para não se causar nenhum desastre com ele :)

2)No código que você mandou, se você quer só estabelecer um timeout, use o postDelayed no seu handler:


Abs,
Rodrigo Dias.

2012/9/12 Bruno Baudel <brunobaudel@gmail.com>
Quando voce da um Sleep o processo fica parado ate que passe esse tempo em milisegundos
Bruno Baudel


Em 12 de setembro de 2012 11:07, Bruno Baudel <brunobaudel@gmail.com> escreveu:

Cara uma dica faz isso com o asyncTask
 http://developer.android.com/reference/android/os/AsyncTask.html
Bruno Baudel


Em 12 de setembro de 2012 10:59, Jonas Dhein <jonasdhein@gmail.com> escreveu:

Olá pessoal. Estou utilizando o handler para algumas funcões no meu projeto. Porém ela não se comporta como eu gostaria, acho que nao implementei da maneira correta. Segue o meu código:

public void funcao_Login(){
   
    InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
        imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
    progressDialog = ProgressDialog.show(login.this,"Logando", "Por favor, aguarde...");
    progressDialog.setIcon(R.drawable.estrela51);
    progressDialog.setCancelable(true);
   
    Runnable runnable = new Runnable() {
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
exibirMensagem("Erro na Thread", e.getMessage().toString());
}
handler.post(new Runnable() {
public void run() {
if (usuario_Login.getText().equals("") || senha_Login.getText().equals("")){
            Toast.makeText(login.this, "Login inválido", Toast.LENGTH_SHORT).show();
                    }else{
                    boolean wConexao = false;
                        wConexao = fazerLogin_OS(usuario_Login.getText().toString(), senha_Login.getText().toString());
        if (wConexao == true){
        chamaPrincipal();
        progressDialog.dismiss();
                        }
            }
}
});
progressDialog.dismiss();
}
};
new Thread(runnable).start();
    }

Porém o código fica travado aqui: Thread.sleep(2000); , e eu gostaria que essa função tivesse esse timeout.
Alguém sabe como posso corrigir isso?



Em 12 de setembro de 2012 10:45, luciofm <luciofm@gmail.com> escreveu:

Note: The Alarm Manager is intended for cases where you want to have
your application code run at a specific time, even if your application
is not currently running. For normal timing operations (ticks,
timeouts, etc) it is easier and much more efficient to use Handler.

No seu caso, sera um timeout dentro do serviço. Eu iria com um handler
que é bem mais simples.

Lúcio Maciel
luciofm@gmail.com


2012/9/12 Bruno Milhan <brunomilhan2@gmail.com>:
> Obrigado.
>
> Utilizarei o AlarmManager, analisando o problema e estudando o Handler
> percebi que ele serve mais para tempo curtos como disse, divisões de
> processos, etc. Um exemplo bom seria a criação de uma tela SplashScreen, mas
> não é o caso!
>
> Até mais pessoal




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

0 comentários:

Postar um comentário