我正在使用MediaBrowserService在设备上播放音频。 当我打开蓝牙并播放音频时,应用崩溃。
下面是日志
java.lang.IllegalStateException: onLoadChildren must call detach() or sendResult() before returning for package=com.android.bluetooth id=__ROOT__
at android.service.media.MediaBrowserService.performLoadChildren(MediaBrowserService.java:669)
at android.service.media.MediaBrowserService.addSubscription(MediaBrowserService.java:600)
at android.service.media.MediaBrowserService.-wrap3(MediaBrowserService.java)
at android.service.media.MediaBrowserService$ServiceBinder$3.run(MediaBrowserService.java:272)
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:6682)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
如何处理?
答案 0 :(得分:1)
onLoadChildren()
被调用以获取有关媒体项的子项的信息。
实施必须调用带有子项列表的result.sendResult 。 如果要装载孩子,将是一项昂贵的手术, 在另一个线程上执行 result.detach 从此函数返回,然后在以下情况下调用result.sendResult 加载完成。
如果媒体项没有任何子项,请致电 具有空列表的MediaBrowserService.Result.sendResult(T)。
在result.sendResult()
实现中必须调用一种或另一种onLoadChildren()
。
答案 1 :(得分:0)
似乎MediaBrowserService处于错误状态,请在此处检查生命周期:https://developer.android.com/guide/topics/media-apps/audio-app/building-a-mediabrowserservice#service-lifecycle