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

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

[code] 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;
        }
    }
}[/code]

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.

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).

1 curtida

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.

1 curtida

[quote=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.[/quote]

Só um detalhe, é um loop infinito…

[quote=A H Gusukuma][quote=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.[/quote]

Só um detalhe, é um loop infinito…[/quote]

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