我有一个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();.
虽然,如果我附上looperin Run(),我不会遇到任何问题。
我究竟做错了什么?