我有一个MyThread扩展HandlerThread,我需要将runnables发布到MyThread类中的队列中。
我知道如何做到这一点的唯一方法是致电
h = new MyHandler(Looper.myLooper());
然后h.post(r)
发布Runnable r。
但是我不知道在哪里放置新的MyHandler()行,因为线程需要在我获得looper之前启动。还有另一个类启动MyThread并将runnables发布到它,但现在我也需要在类中执行它。有什么想法吗?
编辑:
class MyThread extends HandlerThread {
private MyHandler h;
private Runnable r;
MyThread(String name, int priority) {
super(name, priority);
//h = new MyHandler();
r = new MyRunnable();
}
@Override
public void start() {
super.start();
//h = new MyHandler();
}
class MyRunnable implements Runnable {
@Override
public void run() {
//...
}
}
void startCount(long delay) {
h.postDelayed(r, delay);
}
}
两个注释行都产生相同的结果:r在主线程中执行,而不是在我想要实现的HandlerThread中执行。
答案 0 :(得分:0)
HandlerThread ht = ...
ht.start();
Handler h = new Handler(ht.getLooper(), callback)