【发布时间】:2017-04-02 15:04:45
【问题描述】:
当我打开包含 MediaBrowser 连接的活动 1(应用程序的主/启动器活动)时,MediaBrowser.subscribe 工作正常(在它之后调用onChildrenLoaded),但是当我打开其他一些活动时(编号 2)从活动 1(使用按钮单击侦听器和意图)然后关闭此活动 2,MediaBrowser.subscribe 停止工作 - 订阅后不会调用 onChildrenLoaded,因此在活动 2 完成订阅回调(活动 1)的onConnected 后mMediaBrowser.subscribe(MEDIA_ID_ROOT, mSubscriptionCallback); 正在被调用,但我的项目没有更新,因为 onChildrenLoaded 从未被触发
private MediaBrowserCompat.ConnectionCallback mConnectionCallback =
new MediaBrowserCompat.ConnectionCallback() {
@Override
public void onConnected() {
Log.i(TAG, "onConnected");
mMediaBrowser.unsubscribe(MEDIA_ID_ROOT, mSubscriptionCallback);
mMediaBrowser.subscribe(MEDIA_ID_ROOT, mSubscriptionCallback);
}
};
private MediaBrowserCompat.SubscriptionCallback mSubscriptionCallback = new MediaBrowserCompat.SubscriptionCallback() {
@Override
public void onChildrenLoaded(String parentId, List<MediaBrowserCompat.MediaItem> children) {
Log.i(TAG, "onChildrenLoaded"); // isn't being called on android 6.0.1 after I got back to this activity from other
if (children != null) {
if (mMediaItems != null) {
mMediaItems.clear();
mMediaItems = null;
}
mMediaItems = children;
if (mAdapter == null) {
mAdapter = new Adapter();
mRecyclerView.setAdapter(mAdapter);
} else {
mAdapter.notifyDataSetChanged();
}
}
}
@Override
public void onError(String id) {
Log.i(TAG, "SubscriptionCallback onError");
}
};
但它适用于 4.4.4 Android(没有此类问题)
更新
我好像在 Google Bugs 上发现了这个问题(一些开发者报告了它):https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=-has%3Asubcomponent%20-has%3Atarget%20emulator%20.&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened&groupby=&sort=&id=232455
但是没有办法
也有这样的错误:
04-02 18:25:55.519 11250-11250/com.android.player W/MBServiceCompat: removeSubscription for callback that isn't registered id=hhhh
04-02 18:25:55.519 11250-11250/com.android.player W/MBServiceCompat: addSubscription for callback that isn't registered id=hhhh
04-02 18:25:55.525 11250-11250/com.android.player W/MBServiceCompat: removeSubscription for callback that isn't registered id=hhhh
04-02 18:25:55.525 11250-11250/com.android.player W/MBServiceCompat: addSubscription for callback that isn't registered id=hhhh
更新 2
还有
https://github.com/googlesamples/android-UniversalMusicPlayer/issues/92
mb这个链接的最后评论也会为我解决这个问题
更新 3
是的,github.com/googlesamples/android-UniversalMusicPlayer/issues/92#issuecomment-287668132 解决了问题:
将 MediaBrowserCompat.connect() 从 onStart() 移动到 onCreate(),并且 将 MediaBrowserCompat.disconnect() 从 onStop() 移动到 onDestroy()。它 现在可以使用了。
【问题讨论】:
-
您使用的是什么版本的支持库?你能在最新的(25.3.1)上重现这个吗?
-
@ianhanniballake 是的,我用的是最新的
-
如果你有一个超小的示例项目来演示这个问题,你能把它附加到你链接到的错误上吗?
标签: android