Handler在运行线程时做了什么?

Cur*_*ain 2 java android

我真的对此感到困惑,但是当我从SurfaceView中触发一个线程时,我发送一个带有这样的构造函数的Handler

private static Thread thread;

public SurfaceView(Context localContext) {
      //other stuff
      thread = new Thread(mySurfaceHolder, myEngine, this, new Handler());
      //other stuff
}
Run Code Online (Sandbox Code Playgroud)

在我的线程类中,我使用我从视图发送的处理程序分配一个Handler对象,如下所示:

    public Thread (SurfaceHolder lHolder,
    Engine lEngine,
    View lView,
    Handler lHandler){

    surfaceHolder = lHolder;
    engine = lEngine;
    view = lView;
    handler = lHandler;

}
Run Code Online (Sandbox Code Playgroud)

那么这个处理程序做什么呢?我从来没有在我的线程类中以任何方式使用它,那么为什么网上的例子仍然告诉我我应该用构造函数发送一个处理程序?我看不到连接.

Kon*_*rov 5

来自Handler文档:

为应用程序创建进程时,其主线程专用于运行消息队列,该队列负责管理顶级应用程序对象(活动,广播接收器等)及其创建的任何窗口.您可以创建自己的线程,并通过Handler与主应用程序线程进行通信.这是通过调用与以前相同的post或sendMessage方法完成的,但是来自您的新线程.给定的Runnable或Message将在Handler的消息队列中进行调度,并在适当时进行处理.

通常需要从您的线程回传到UI,以防您需要执行一些严格在UI线程上运行的代码.