我试图从运行方法弹出对话框,它给了我没有调用Looper.prepare的异常,当我调用相同的方法时,我没有得到任何异常,但是控制台上没有弹出对话框。正如我以这种方式使用处理程序一样,
handler = new Handler() {
public void handleMessage(Message msg) {
showDialog(DIALOG1_KEY);
// process incoming messages here
}
};
我再也没有遇到任何例外,但是仍然没有运气能告诉我我做错了什么。
从您提供的代码片段很难看出来,但我认为您使用的处理程序不正确。
您需要做的是Handler在它们的主线程上初始化一个新对象,例如,通过将其定义为字段变量。
private Handler handler = new Handler();
然后创建一个Runnable包含要在GUI线程上执行的指令的新指令(但将从后台线程的run方法中调用该指令)。
private Runnable runOnGUI = new Runnable() {
private void run() {
showDialog(DIALOG1_KEY);
}
};
然后,在运行方法中,您需要使用处理程序对象将您的runOnGUI方法发布到GUI线程上。
private Runnable runInBackground = new Runnable() {
private void run() {
handler.post(runOnGUI);
// Do processing
}
};
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。