我有一个class
扩展Thread
如下 -
public class ThreadTest extends Thread {
private Handler handler;
private Runnable runnable;
public ThreadTest(Runnable runnable, Handler handler) {
this.handler = handler;
this.runnable = runnable;
}
@Override
public void run() {
super.run();
Message msg = handler.obtainMessage();
msg.obj = "YUSSSSSS!";
handler.sendMessage(msg);
if (Looper.myLooper() != null) {
Looper.myLooper().quit();
Log.i("Looper", "has been quit");
}
}
}
现在,我想在looper
这个线程上附加一个。根据我对Looper
只有主线程的理解,looper
默认情况下会附加到它。
我尝试像这样调用Looper.prepare()
并Looper.loop()
形成ThreadTest
类的构造函数-
public ThreadTest(Runnable runnable, Handler handler) {
Looper.prepare();
this.handler = handler;
this.runnable = runnable;
Looper.loop();
}
但是,我java.lang.RuntimeException: Only one Looper may be created per thread
在Looper.prepare();
.
虽然,如果我附上looper
in Run()
,我不会遇到任何问题。
我究竟做错了什么?