1

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。此值绝不能为空。

( https://developer.android.com/reference/android/service/media/MediaBrowserService.html#onLoadChildren(java.lang.String,%20android.service.media.MediaBrowserService.Result%3Cjava.util.List%3Candroid. media.browse.MediaBrowser.MediaItem%3E%3E) )

所以,我的问题来了:

1)如何(以及为什么)parentId设置为,null而文档说它不能是null。我无法控制这一点,因为系统调用onLoadChildrennull 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)
4

0 回答 0