Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在线程内的循环器中使用处理程序(在循环器之前创建)_Android - Fatal编程技术网

Android 如何在线程内的循环器中使用处理程序(在循环器之前创建)

Android 如何在线程内的循环器中使用处理程序(在循环器之前创建),android,Android,hi mate在所有教程或示例中,活套中使用的处理程序是在活套示例中创建的: class LooperThread extends Thread { public Handler mHandler; public void run() { Looper.prepare(); mHandler = new Handler() { public void handleMessage(Message ms

hi mate在所有教程或示例中,活套中使用的处理程序是在活套示例中创建的:

 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
              }
          };

是否可以将他与循环器中的thread in run()方法相关联,或者我必须仅在循环器中的run方法中创建他?

处理程序中的构造函数基本上如下所示:

public Handler() {
    ....
    mLooper = Looper.myLooper();
    if (mLooper == null) {
       // throws an exception
    }
    ....
}
字段,
mLooper
是一个包私有的
final
字段-当然,没有setter可供您稍后更改

简而言之,
Handler()
构造函数将自身与
Looper.myLooper()
相关联,还有其他构造函数允许您传递
Looper
——但这些构造函数也要求您在创建
处理程序之前创建
Looper