我有一个创建处理程序的线程。从服务调用该线程。问题是因为它从服务调用,我不能使用Activity.runOnUiThread()。我只能访问Context not Activity。
创建处理程序时出现此错误,
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);
}
代码可能看起来很奇怪,因为我删除了一堆语句。
答案 0 :(得分:1)
处理程序在其主题中需要Looper。只需在初始化线程时调用Looper.prepare()
,并在准备好时使用Looper.loop()
启动Looper。
public void runTask() {
Looper.prepare();
Handler handler = new Handler() {
public void handleMessage(Message msg) {
//HANDLER CODE
}
};
Looper.loop();
handler.sendEmptyMessage(0);
}
或者您也可以使用HandlerThread为您初始化Looper。