0

我有一个扩展 HandlerThread 的 MyThread,我需要在 MyThread 类中将 runnables 发布到它的队列中。

我知道如何做到这一点的唯一方法是致电

h = new MyHandler(Looper.myLooper());

然后h.post(r)发布 Runnable r。

但是我不确定在哪里放置新的 MyHandler() 行,因为需要先启动线程,然后才能获得 looper。还有另一个类启动 MyThread 并向其发布可运行文件,但现在我也需要在类中执行此操作。有任何想法吗?

编辑:

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 中执行。

4

1 回答 1

0
HandlerThread ht = ...
ht.start();
Handler h = new Handler(ht.getLooper(), callback)
于 2013-07-16T06:23:38.257 回答