所以我正在尝试实现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()
请帮忙。
答案 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