我MediaBrowserServiceCompat
用来支持Android Auto
。
从崩溃报告(我在这个问题的底部添加了其中一个)我看到onLoadChildren
我覆盖的方法存在问题。
我这样做:
if(parentId == null){
result.sendResult(null);
return;
}
因为在文档中它说如果parentId
无效,请sendResult
使用null
. 它正在崩溃,但它应该根据文档执行此操作,而不是崩溃:
“当给定的 parentId 无效时,实现必须调用带有 null 的 result.sendResult,这将调用 MediaBrowserCompat.SubscriptionCallback.onError。”
另一方面,文档还提到了以下内容parentId
:
parentId
: String: 要查询其子项的父媒体项的 id。此值绝不能为空。
所以,我的问题来了:
1)如何(以及为什么)parentId
设置为,null
而文档说它不能是null
。我无法控制这一点,因为系统调用onLoadChildren
null parentId
。
2)为什么它会崩溃而不是MediaBrowserCompat.SubscriptionCallback.onError.
像文档所述那样调用?
其中一份崩溃报告:
Fatal Exception: java.lang.IllegalStateException: onLoadChildren sent null list for id null
at android.service.media.MediaBrowserService$3.onResultSent + 473(MediaBrowserService.java:473)
at android.service.media.MediaBrowserService$3.onResultSent + 469(MediaBrowserService.java:469)
at android.service.media.MediaBrowserService$Result.sendResult + 131(MediaBrowserService.java:131)
at androidx.media.MediaBrowserServiceCompat$ResultWrapper.sendResult + 1274(MediaBrowserServiceCompat.java:1274)
at androidx.media.MediaBrowserServiceCompat$MediaBrowserServiceImplApi21$2.onResultSent + 416(MediaBrowserServiceCompat.java:416)
at androidx.media.MediaBrowserServiceCompat$MediaBrowserServiceImplApi21$2.onResultSent + 404(MediaBrowserServiceCompat.java:404)
at androidx.media.MediaBrowserServiceCompat$Result.sendResult + 857(MediaBrowserServiceCompat.java:857)
at com.myapp.myMediaBrowserService.onLoadChildren + 124(myMediaBrowserService.java:124)
at androidx.media.MediaBrowserServiceCompat$MediaBrowserServiceImplApi21.onLoadChildren + 425(MediaBrowserServiceCompat.java:425)
at androidx.media.MediaBrowserServiceCompat$MediaBrowserServiceImplApi21$MediaBrowserServiceApi21.onLoadChildren + 515(MediaBrowserServiceCompat.java:515)
at android.service.media.MediaBrowserService.performLoadChildren + 495(MediaBrowserService.java:495)
at android.service.media.MediaBrowserService.addSubscription + 459(MediaBrowserService.java:459)
at android.service.media.MediaBrowserService.access$400 + 68(MediaBrowserService.java:68)
at android.service.media.MediaBrowserService$ServiceBinder$3.run + 247(MediaBrowserService.java:247)
at android.os.Handler.handleCallback + 739(Handler.java:739)
at android.os.Handler.dispatchMessage + 95(Handler.java:95)
at android.os.Looper.loop + 148(Looper.java:148)
at android.app.ActivityThread.main + 7331(ActivityThread.java:7331)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run + 1230(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main + 1120(ZygoteInit.java:1120)