2012-07-02 14 views
8

Sto creando e il programma di Android, che ha bisogno di tenere continuamente l'invio dei dati sopra il bluetooth ora uso qualcosa di simile:Come eseguire un ciclo infinito in Android senza congelare l'interfaccia utente?

for(;;) 
{ 
//send message 
} 

se questo funziona si congela la mia interfaccia utente e applicazione come posso implementare lo stesso senza congelare la mia interfaccia utente?

Sono sicuro che l'app sta inviando i dati mentre monitoro i dati.

+3

uso [ 'AsyncTask'] (http://www.google.com.pk/search?q=AsyncTask) –

+0

si fa effettivamente hanno qualcosa che deve essere visualizzato sullo schermo? Se non si utilizza un servizio. In tal caso, usa AsyncTask come dice @AdilSoomro. – FoamyGuy

+0

Un'altra buona (ma lunga) risorsa sarebbe http://developer.android.com/guide/components/processes-and-threads.html – gobernador

risposta

1

È necessario spostare il lavoro in un altro thread (diverso dal thread dell'interfaccia utente), per impedire ANR.

new Thread(new Runnable(){ 
     @Override 
     public void run(){ 
      Looper.prepare(); 
      //do work here 
     } 
    }).start(); 

Quanto sopra è un metodo rapido e sporco, il metodo preferito nella maggior parte dei casi sta usando AsyncTask

7

Mettere il ciclo in un AsyncTask, Service con thread separato o semplicemente in un altro thread accanto la vostra attività. Mai fare lavori pesanti, infiniti loop o bloccare le chiamate nella tua discussione principale (UI).

0

Avviare un IntentService che creerà un thread in background per l'esecuzione del servizio. Chiama Looper.prepare() come suggerisce @YellowJK, ma poi chiama Looper.loop() quando hai bisogno che il tuo programma attenda qualcosa per succede così il Servizio non viene ucciso.

@Override 
protected void onHandleIntent(Intent arg0) { 
    Looper.prepare(); 
    //Do work here 
    //Once work is done and you are waiting for something such as a Broadcast Receiver or GPS Listenr call Looper.loop() so Service is not killed 
    Looper.loop(); 
} 
Problemi correlati