2

我有一个创建处理程序的线程。从服务调用线程。问题是因为它是从服务调用的,所以我不能使用 Activity.runOnUiThread()。我只能访问上下文而不是活动。

创建处理程序时出现此错误,

11-09 13:34:52.355: W/System.err(20974): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
11-09 13:34:52.359: W/System.err(20974):    at android.os.Handler.<init>(Handler.java:121)

这是代码:

public void runTask() {


        Handler handler = new Handler() {
            public void handleMessage(Message msg) {
                //HANDLER CODE
            }
        };

        handler.sendEmptyMessage(0);

    }

代码可能看起来很奇怪,因为我删除了一堆语句。

4

1 回答 1

1

处理程序在其线程中需要一个Looper 。只需Looper.prepare()在初始化 Thread 时调用,并在您准备好启动 Looper 时使用Looper.loop().

public void runTask() {
    Looper.prepare();

    Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            //HANDLER CODE
        }
    };

    Looper.loop();
    handler.sendEmptyMessage(0);
}

或者,您也可以使用HandlerThread为您初始化 Looper。

于 2012-11-09T18:54:41.530 回答