0

嗨,在所有教程或示例中,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 方法中创建他?

4

1 回答 1

0

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

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

该字段mLooper是一个包私有final字段 - 当然,您以后没有可用的设置器来更改它。

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

于 2012-09-12T10:26:19.717 回答