2012-10-17 45 views
1

因此,我试图实现应用内结算,问题是我需要BillingHelper/ReponseHandler在UI线程上运行。当我在我的Screen类中创建只继承Activity作为参数的处理程序时。并在Open GL线程上运行我得到下面的错误。如何在Open GL更新线程中将Handler运行到UI线程

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

请帮忙。

回答

1

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

虽然有一个捷径。方法Activity.runOnUiThread()需要Runnable并在UI线程中执行,不需要处理程序。

0

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

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

希望这简单的信息可以帮助你,Google docs

+0

还有一点很清楚,当OP是* *创建的处理程序,不发送消息时出现错误。从无UI线程发送消息非常好。 –