chromecast sendMessage中的IllegalStateException

问题描述 投票:3回答:1

[在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);
                }
            });

这里可能是什么问题?我自己无法复制。

android chromecast
1个回答
0
投票

尝试将Log.d()放入run()主体中,以确保流程到达那里,并且可以排除错误出在sendMessage()方法处理中。然后:

runOnUiThread

在UI线程上运行指定的操作。如果当前线程是UI线程,然后立即执行操作。如果当前线程不是UI线程,操作已发布到事件队列UI线程。

[Handler()runOnUiThread()可以在线程UI上执行操作,但是runOnUiThread()仅从线程执行进程,并且必须传递对其执行的活动的引用。

runOnUiThread(new Runnable() {
    public void run() {
        //...    
    }
});

GL

Source

© www.soinside.com 2019 - 2024. All rights reserved.