Android处理程序:无法在未调用Looper.prepare()的线程内创建处理程序

时间:2014-04-17 18:42:53

标签: android multithreading handler

我有一个帖子:

public class KelvinThread implements Runnable {

private Handler mSoundHandler;

public KelvinThread() {
    super();
    mSoundHandler = new Handler();
}

private Runnable mSoundThread = new Runnable() {
    public void run() {
        // my treatment
    }
};

@Override
public void run() {
    while (true) {
        // ....
        mSoundHandler.postDelayed(mSoundThread, 2000);
        // ....
    }
}

这个帖子" KelvinThread"是从另一个线程创建并启动的。

我有这个错误:

  

无法在未调用Looper.prepare()的线程内创建处理程序

分配我的处理程序时:mSoundHandler = new Handler();

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

请参阅Looper documentation。还有一个例子。

<强> UPD 您也可以使用Looper.getMainLooper()将处理程序附加到主循环器而不是创建第一个线程。