首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >致命异常: java.lang.IllegalStateException in MediaBrowser

致命异常: java.lang.IllegalStateException in MediaBrowser
EN

Stack Overflow用户
提问于 2018-04-20 12:44:08
回答 1查看 1.4K关注 0票数 0

我的音频流应用程序在Crashlytics中有这个问题,下面的堆栈跟踪

代码语言:javascript
复制
Fatal Exception: java.lang.IllegalStateException: getExtras() called while not connected (state=CONNECT_STATE_CONNECTING)
   at android.media.browse.MediaBrowser.getExtras(MediaBrowser.java:296)
   at android.support.v4.media.MediaBrowserCompatApi21.getExtras(SourceFile:65)
   at android.support.v4.media.MediaBrowserCompat$MediaBrowserImplApi21.onConnected(SourceFile:1852)
   at android.support.v4.media.MediaBrowserCompat$ConnectionCallback$StubApi21.onConnected(SourceFile:649)
   at android.support.v4.media.MediaBrowserCompatApi21$ConnectionCallbackProxy.onConnected(SourceFile:102)
   at android.media.browse.MediaBrowser$5.run(MediaBrowser.java:577)
   at android.os.Handler.handleCallback(Handler.java:751)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:154)
   at android.app.ActivityThread.main(ActivityThread.java:6316)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

在我的代码中,我启动了一个MediaBrowser

代码语言:javascript
复制
mMediaBrowserCompat = new MediaBrowserCompat(this, new ComponentName(this, BackgroundAudioService.class),
            mMediaBrowserCompatConnectionCallback, input);

我还提供了一个连接回调。

代码语言:javascript
复制
private MediaBrowserCompat.ConnectionCallback mMediaBrowserCompatConnectionCallback = new MediaBrowserCompat.ConnectionCallback() {

    @Override
    public void onConnected() {
        super.onConnected();
        try {

            mMediaControllerCompat = new MediaControllerCompat(Player2Activity.this, mMediaBrowserCompat.getSessionToken());
            mMediaControllerCompat.registerCallback(mMediaControllerCompatCallback);
            MediaControllerCompat.setMediaController(Player2Activity.this,mMediaControllerCompat);

        } catch (RemoteException e) {

        }
    }



    public void onConnectionSuspended() {
        Log.v(TAG, "mMediaBrowserCompatConnection onConnectionSuspended");
        mMediaBrowserCompat = null;
    }

};

这个问题让我很困惑,因为我没有看到我的回调函数在堆栈跟踪中被调用。此外,我可以看到在堆栈跟踪中已经调用了onConnected()函数,但是,为什么它仍然抱怨状态仍然是CONNECT_STATE_CONNECTING。希望有人能帮我。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-23 04:02:32

当我在启动和音频时不止一次地点击按钮时,我就发生了这种情况。MediaBrowserCompat对象多次被初始化,这将导致错误。

初始化对象时,只需进行空检查:

代码语言:javascript
复制
if(mMediaBrowser == null)
                mMediaBrowser = new MediaBrowserCompat(context, new ComponentName(context, MusicService.class), mConnectionCallback, null);

希望能成功。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49941943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档