Cómo ejecutar un bucle infinito en Android sin congelar la interfaz de usuario?

Estoy creando y el programa androide que necesita para mantener continuamente el envío de datos a través del bluetooth ahora uso algo como esto:

for(;;) { //send message } 

Aunque esto funciona se congela mi interfaz de usuario y la aplicación ¿cómo puedo implementar el mismo sin congelar mi interfaz de usuario?

Estoy seguro de que la aplicación está enviando los datos a medida que monitoreo los datos.

Ponga su bucle en un AsyncTask , Service con hilo separado o simplemente en otro hilo junto a su actividad. Nunca realice trabajos pesados, inserte bucles o bloquee llamadas en su hilo principal (UI).

Debe mover el trabajo en otro subproceso (que no sea el subproceso de interfaz de usuario), para evitar ANR.

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

Lo anterior es un método rápido y sucio, el método preferido en la mayoría de los casos es el uso de AsyncTask

Inicie un IntentService que creará un subproceso de fondo para que ejecute su servicio. Llame a Looper.prepare () como @YellowJK sugiere, pero luego llame a Looper.loop () cuando necesite que su programa espere a que ocurra algo así que el Servicio No es asesinado.

 @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(); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.