Looping em java para android é algum tipo de pecado? (app android+studio)

4 respostas
aranisia

Bom, acho que todos aqui já usaram um looping em sua vida.
Acontece que no java para android isso se mostra muito trabalhoso, é quase como se fosse uma saga;
Estou tentando fazer um looping pois a ideia é que o meu programa fique constantemente ligado a um servidor

Quando eu ve

public void LoopingMortal(View v)
    {
        int x = 0;
        while(x < 1000)
        {
            // Queremos mostrar os numeros mudando no visor do celular usando TextView
            ((TextView) findViewById(R.id.textView)).setText("Numero "+ x);
            //System.out.println(x);

            x++;
            if( x == 998)
            {
                x = 1;
            }
        }
    }

Ok, muitos irão me dizer que eu poderia usar true no looping, mas o problema não é se o código é bem feito e enxuto, o problema é que código acima ou não atualiza numero no visor ou faz a aplicação travar sem mostrar números algum.
Mesmo eu dando o Thread.sleep(1000) para o dispositivo "respirar" , ainda assim ele trava ou gera exceção ou não joga nada na tela.

Sou iniciante em java e não gosto muito dessa linguagem pois perdemos mais tempo em contornar situações de possíveis erros e políticas de segurança do que produzindo algo. Por isso eu gostaria de saber , em se tratando de Android studio + java , o que as boas práticas dessa linguagem manda fazer quando precisamos empregar loopings infinitos???

Vi por aí as pessoas dizendo que devemos usar Thread , Runnable, Run() e outras coisas exóticas, mas gostaria de saber existe alguma solução mais limpa e por qual motivo isso acontece.

Por acaso eu poderia colocar algo em meu arquivo Manifest para que os looping não travem ?
Em nenhuma linguagem eu encontro esse problema, só em java para android.

4 Respostas

A

O problema é que para programar para Android você precisa conhecer detalhes do projeto Android, um app funciona de acordo com esses requisitos, você não pode fazer código que vá contra a especificação do projeto. Por exemplo, um app Android usa apenas uma Thread (Main thread ou UI thread) para executar seus componentes básicos (Activity, Service, Receiver e Content Provider) e se você colocar um loop nessa thread o que vai acontecer é o travamento (aparente) da app e se ficar alguns segundos sem responder algum evento o sistema vai interromper com o ANR.
Para repetir a execução de tarefas o Android disponibiliza vários recursos, dependendo de como o seu app for projetado para executar. Dá uma olhada em Handler e Alarm (AlarmManager).

Marky.Vasconcelos

No seu caso é que a Thread responsavel por dar update na UI está parada executando seu while.

Apos ele terminar voce vai ver o ultimo valor do setText na sua View.

A

Marky.Vasconcelos:
No seu caso é que a Thread responsavel por dar update na UI está parada executando seu while.

Apos ele terminar voce vai ver o ultimo valor do setText na sua View.

Só um detalhe, é um loop infinito…

Marky.Vasconcelos

A H Gusukuma:
Marky.Vasconcelos:
No seu caso é que a Thread responsavel por dar update na UI está parada executando seu while.

Apos ele terminar voce vai ver o ultimo valor do setText na sua View.

Só um detalhe, é um loop infinito…

Ah é, ele não vai parar nunca, mas se o código sair do while voce vai ver o ultimo progresso.

Criado 26 de julho de 2015
Ultima resposta 28 de jul. de 2015
Respostas 4
Participantes 3