Java 未调用Looper.loop,但处理程序中的代码仍在执行

Java 未调用Looper.loop,但处理程序中的代码仍在执行,java,android,looper,Java,Android,Looper,我试图了解looper.loop是如何工作的,以及何时在代码中使用它。 我有一个绑定服务,它有一个runnable。里面有一个处理程序,用于保存更新Ui的代码。这是代码 private Runnable builder = new Runnable() { public void run() { while(isThreadStarted == true) { if (newgps == 1) { Handler handler = new Ha

我试图了解looper.loop是如何工作的,以及何时在代码中使用它。 我有一个绑定服务,它有一个runnable。里面有一个处理程序,用于保存更新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
} 
  • 从我读到的活套。必须在生成处理程序之前调用prepare。但是我注意到我没有这么做,但是这个代码仍然有效。这怎么可能
  • 我想解决这个问题,但我不知道把loper.loop放在哪里。因为这个处理程序被多次调用。我把looper.loop放在后面可以吗?准备好了吗?然后。在IsThreadStart==false时退出

  • 处理程序
    与UI线程关联,因为您将其附加到
    Looper.getMainLooper()
    。UI线程在应用程序启动时准备它的
    活套
    ,因此应用程序不必自己做任何事情。

    通过使用
    Looper.getMainLooper()
    ,您将获得主线程的
    处理程序
    ,并在主线程上发布。创建主线程时,系统已准备好其活套