gpt4 book ai didi

android - 每次运行时更改都会重新创建 MediaBrowserServiceCompat 实例

转载 作者:太空宇宙 更新时间:2023-11-03 12:15:57 26 4
gpt4 key购买 nike

我有一个 Service 使用新的 MediaBrowserServiceCompat 与我的 Player 实现交互。

这是我的服务的 onCreate()

@Override
public void onCreate() {
super.onCreate();

audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);

initMediaSession();
initMediaPlayer();

}

和我的initMediaSession()

private void initMediaSession() {
Log.d(TAG, "initMediaSession: ");
mediaSessionCompat = new MediaSessionCompat(getApplicationContext(), TAG);
mediaSessionCompat.setCallback(new MediaSessionCompat.Callback() {
// I override the methods here
});
mediaSessionCompat.setActive(true);

// Method from MediaBrowserServiceCompat
setSessionToken(mediaSessionCompat.getSessionToken());
}

然后我在我的 Activity 中访问我的 MediaBrowserCompat:

@Override
public void onCreate() {
mediaBrowser = new MediaBrowserCompat(this, new ComponentName(this, MediaPlaybackService.class), mediaBrowserConnectionCallback, null);
mediaBrowser.connect();
}



// I do stuff here



@Override
protected void onDestroy() {
super.onDestroy();
if (mediaBrowser != null) {
mediaBrowser.disconnect();
}
}

每次调用 mediaBrowser.connect() 时,我的服务都会创建并在调用 mediaBrowser.disconnect() 时终止。

问题是当 MediaSessionCompat 被重新创建时,我丢失了我创建的任何元数据或我可能保存的播放状态。

这是应该的方式还是我做错了?

此外,如果它应该是那样的话,这是否意味着我必须将我的元数据保存在某个地方并在每次创建新的 MediaSessionCompat 时调用 MediaSessionCompat.setMetadata()目的?还是有更有效的解决方案?

谢谢

最佳答案

MediaBrowserService and the modern media playback app blog 中所述:

this wraps the API for bound services, which makes sense since we’re trying to connect to a Service.

绑定(bind)服务的生命周期与谁绑定(bind)到服务直接相关:

When the last client unbinds from the service, the system destroys the service (unless the service was also started by startService()).

在您的情况下,服务将不再在 onDestroy() 和 onCreate() 之间绑定(bind)任何人。

Universal Android Music Player's MusicService的例子是为了:

  • 播放开始时调用 startService(new Intent(this, MediaPlaybackService.class)
  • 播放停止时调用 stopSelf()

这确保绑定(bind)客户端的更改不会导致服务在播放过程中被破坏。

关于android - 每次运行时更改都会重新创建 MediaBrowserServiceCompat 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35869383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com