1

我试图了解 looper.loop 是如何工作的,以及何时在我的代码中使用它。我有一个可运行的绑定服务。在里面我有一个处理程序,用于保存更新 Ui 的代码。这是代码。

private Runnable builder = new Runnable() {
public void run() 
{
  while(isThreadStarted == true)
  {
    if (newgps == 1)
     {  
         Handler handler = new Handler(Looper.getMainLooper());
        handler.post(new Runnable() {
                       public void run() { 
                         //some code that updates UI
                       }
                 }
           }
      }
  }
  looper.prepair
} 
  1. 从我读到的looper。prepare 必须在处理程序生成之前调用。但我注意到我没有这样做,但这段代码仍然有效。这怎么可能?
  2. 我想解决这个问题,但我不确定将 loper.loop 放在哪里。因为这个处理程序被多次调用。如果我将 looper.loop 放在 .prepare 之后可以吗?那么.quit什么时候isThreadStarted == false?
4

2 回答 2

0

通过使用Looper.getMainLooper(),您可以获得Handler主线程并在主线程上发布。主线程在创建时已经由系统准备好了它的looper。

于 2013-07-14T13:26:33.720 回答
0

HandlerUI 线程相关联,因为您将其附加到Looper.getMainLooper(). UI 线程Looper在应用程序启动时做好准备,因此应用程序无需自行执行任何操作。

于 2013-07-14T13:19:09.463 回答