如何在Open GL更新线程中运行Handler到UI线程

时间:2012-10-17 01:45:27

标签: java android eclipse

所以我正在尝试实现In-App-Billing,问题是我需要我的BillingHelper / ReponseHandler才能在UI线程上运行。当我在我的Screen类中创建处理程序时,它只将Activity作为参数继承。并在Open GL Thread上运行我得到以下错误。

10-16 18:36:28.500: E/AndroidRuntime(28263): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

请帮忙。

2 个答案:

答案 0 :(得分:1)

需要在您希望发布的runnables执行的线程上构建处理程序。因此,如果要在UI线程上运行某些东西,则必须在UI线程上构造处理程序并以某种方式将其传递给工作线程(通常在线程对象构造期间,显式或通过闭包)。

虽然有一条捷径。方法Activity.runOnUiThread()接受Runnable并在UI线程上执行,无需处理程序。

答案 1 :(得分:0)

在例外情况中很清楚:没有Looper.prepare()。除了UI(主)线程之外,在线程中使用处理程序之前,必须始终调用Looper.prepare。演示代码:

Looper.prepare();
Message msg = new Message();
msg.what = 100;
handler.sendMessage(msg);

希望这条简单的信息能为您提供帮助,Google docs