[在Play控制台中,我看到用户在sendMessage chromecast调用中收到IllegalStateException。根据API:
IllegalStateException:如果未在主线程上调用此方法。
但是在我的代码中,我用以下方式称呼它:
Handler uiHandler = new Handler(Looper.getMainLooper());
uiHandler.post(new Runnable(){
@Override
public void run() {
mCastSession.sendMessage(mMyChannel.getNamespace(), message);
}
});
这里可能是什么问题?我自己无法复制。
尝试将Log.d()
放入run()
主体中,以确保流程到达那里,并且可以排除错误出在sendMessage()
方法处理中。然后:
在UI线程上运行指定的操作。如果当前线程是UI线程,然后立即执行操作。如果当前线程不是UI线程,操作已发布到事件队列UI线程。
[Handler()
和runOnUiThread()
可以在线程UI上执行操作,但是runOnUiThread()
仅从线程执行进程,并且必须传递对其执行的活动的引用。
runOnUiThread(new Runnable() {
public void run() {
//...
}
});
GL