如何在一个looper内部线程中使用一个处理程序(在looper之前创建)

时间:2012-09-12 09:37:11

标签: android

在所有教程或示例中,在looper示例中创建了looper中使用的处理程序:

 class LooperThread extends Thread {
      public Handler mHandler;

      public void run() {
          Looper.prepare();

          mHandler = new Handler() {
              public void handleMessage(Message msg) {
                  // process incoming messages here
              }
          };

          Looper.loop();
      }
  }

但是如果在线程之前创建处理程序,例如

public Handler mHandler=new Handler() {
              public void handleMessage(Message msg) {
                  // process incoming messages here
              }
          };

可以将它与looper中run()方法中的线程相关联,或者我必须仅在looper内的run方法中创建他?

1 个答案:

答案 0 :(得分:0)

Handler中的构造函数基本上如下所示:

public Handler() {
    ....
    mLooper = Looper.myLooper();
    if (mLooper == null) {
       // throws an exception
    }
    ....
}

字段mLooper是一个包私有final字段 - 当然,以后没有可供您更改的setter。

简而言之,Handler()构造函数会将自己与Looper.myLooper()关联,还有其他构造函数允许您传递Looper - 但这些也需要您创建Looper 1}}在创建Handler

之前