首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每次运行时更改都会重新创建MediaBrowserServiceCompat实例。

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

Stack Overflow用户
提问于 2016-03-08 13:59:15
回答 1查看 2K关注 0票数 3

我有一个Service,它使用新的MediaBrowserServiceCompat与我的播放器实现交互。

这是我的服务onCreate()

代码语言:javascript
复制
@Override
public void onCreate() {
    super.onCreate();

    audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);

    initMediaSession();
    initMediaPlayer();

}

还有我的initMediaSession()

代码语言:javascript
复制
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中访问我的Activity

代码语言:javascript
复制
@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.setMetadata()对象时,我都必须将元数据保存在某个地方并回忆起MediaSessionCompat呢?还是有更有效的解决方案?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-08 17:55:05

正如MediaBrowserService与现代媒体回放应用博客中提到的

这封装了绑定服务的API,这是有意义的,因为我们试图连接到服务。

绑定服务的生命周期直接与绑定到服务的人有关:

当最后一个客户端从服务中解除绑定时,系统会破坏该服务(除非startService()也启动了该服务)。

在您的示例中,服务将不再在onDestroy()和onCreate()之间绑定任何人。

通用安卓音乐播放器的MusicService的示例是:

  • 回放开始时调用startService(新意图(此,MediaPlaybackService.class) )
  • 停止播放时调用stopSelf()

这将确保绑定客户端中的更改不会导致服务在播放过程中被销毁。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35869383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档