如何在Android中运行无限循环而不冻结UI?

我正在创build和Android程序,需要不断地通过蓝牙发送数据,现在我使用这样的东西:

for(;;) { //send message } 

虽然这个工程冻结了我的用户界面和应用程序,我怎么能不冻结我的用户界面相同的?

我确信应用程序正在监视数据时发送数据。

Solutions Collecting From Web of "如何在Android中运行无限循环而不冻结UI?"

把你的循环放在一个AsyncTaskService与单独的线程或只是在你的活动旁边的另一个线程。 永远不要做繁重的工作,无限循环,或阻止主(UI)线程中的调用。

您需要将工作移到另一个线程(UI线程除外),以防止ANR。

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

以上是一个快速和肮脏的方法,在大多数情况下,首选的方法是使用AsyncTask

启动一个IntentService,它将为您创build一个后台线程来运行您的服务。以@YellowJK的forms调用Looper.prepare(),但是当您需要程序等待发生某些事情时调用Looper.loop()并没有死亡。

 @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(); }