在所有教程或示例中,在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方法中创建他?
答案 0 :(得分:0)
Handler
中的构造函数基本上如下所示:
public Handler() {
....
mLooper = Looper.myLooper();
if (mLooper == null) {
// throws an exception
}
....
}
字段mLooper
是一个包私有final
字段 - 当然,以后没有可供您更改的setter。
简而言之,Handler()
构造函数会将自己与Looper.myLooper()
关联,还有其他构造函数允许您传递Looper
- 但这些也需要您创建Looper
1}}在创建Handler
。