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

查尔斯·尤金·娄宝

我有一个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());
}

然后MediaBrowserCompat,我访问我Activity

@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对象时重新调用?还是有更有效的解决方案?

谢谢

伊恩汉尼巴拉克

MediaBrowserService和现代媒体播放应用程序博客中所述

这包装了绑定服务的API ,这很有意义,因为我们正在尝试连接到服务。

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

当最后一个客户端与服务解除绑定时,系统将销毁该服务(除非该服务也由startService()启动)。

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

的例子通用的Android音乐播放器的MusicService是:

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在运行时更改显示语言并重新创建所有活动

来自分类Dev

为什么每次运行该代码都会重新创建相同的文件?

来自分类Dev

方向更改后每次都会重新创建片段,无法恢复状态

来自分类Dev

uitableview中的FBProfilePictureView每次都会自行重新创建

来自分类Dev

在Java仍在运行时重新创建日志文件

来自分类Dev

Android Fragments,每次保存实例还是重新创建?

来自分类Dev

Android Fragments,每次保存实例还是重新创建?

来自分类Dev

每次重新创建活动时,SharedPreference Set <String>都会重置

来自分类Dev

每次屏幕打开时都会重新创建应用程序类

来自分类Dev

每次重新创建Jquery Datatable时,其单元格大小都会增加

来自分类Dev

每次重新创建活动时,SharedPreference Set <String>都会重置

来自分类Dev

每次显示通知中心时都会重新创建TodayViewController

来自分类Dev

温莎城堡重新创建实例

来自分类Dev

如何在运行时每0.2秒在屏幕上的不同位置重新创建屏幕上的相同节点?

来自分类Dev

试图布局JPanel。每次运行时Java程序布局都会更改

来自分类Dev

防止在每次提交表单时重新创建数组

来自分类Dev

每次都重新创建requirejs依赖项吗?

来自分类Dev

每次我运行时,Visual Studio都会构建项目

来自分类Dev

每次运行时,应用程序都会自行提取

来自分类Dev

Xcode每次运行时都会清除.app目录吗?

来自分类Dev

Xcode每次运行时都会清除.app目录吗?

来自分类Dev

每次循环运行时更改类

来自分类Dev

重用类实例而不重新创建它们

来自分类Dev

重用类实例而不重新创建它们

来自分类Dev

尝试从新创建的工作簿中删除工作表时出现运行时错误 - Outlook VBA

来自分类Dev

ng-switch-when:选择不同的步骤时,是否每次都会重新创建新控制器并删除以前的数据?

来自分类Dev

ng-switch-when:选择不同的步骤时,是否每次都会重新创建新的控制器并删除以前的数据?

来自分类Dev

在配置更改时重新创建片段

来自分类Dev

更改活动主题而不重新创建活动

Related 相关文章

  1. 1

    在运行时更改显示语言并重新创建所有活动

  2. 2

    为什么每次运行该代码都会重新创建相同的文件?

  3. 3

    方向更改后每次都会重新创建片段,无法恢复状态

  4. 4

    uitableview中的FBProfilePictureView每次都会自行重新创建

  5. 5

    在Java仍在运行时重新创建日志文件

  6. 6

    Android Fragments,每次保存实例还是重新创建?

  7. 7

    Android Fragments,每次保存实例还是重新创建?

  8. 8

    每次重新创建活动时,SharedPreference Set <String>都会重置

  9. 9

    每次屏幕打开时都会重新创建应用程序类

  10. 10

    每次重新创建Jquery Datatable时,其单元格大小都会增加

  11. 11

    每次重新创建活动时,SharedPreference Set <String>都会重置

  12. 12

    每次显示通知中心时都会重新创建TodayViewController

  13. 13

    温莎城堡重新创建实例

  14. 14

    如何在运行时每0.2秒在屏幕上的不同位置重新创建屏幕上的相同节点?

  15. 15

    试图布局JPanel。每次运行时Java程序布局都会更改

  16. 16

    防止在每次提交表单时重新创建数组

  17. 17

    每次都重新创建requirejs依赖项吗?

  18. 18

    每次我运行时,Visual Studio都会构建项目

  19. 19

    每次运行时,应用程序都会自行提取

  20. 20

    Xcode每次运行时都会清除.app目录吗?

  21. 21

    Xcode每次运行时都会清除.app目录吗?

  22. 22

    每次循环运行时更改类

  23. 23

    重用类实例而不重新创建它们

  24. 24

    重用类实例而不重新创建它们

  25. 25

    尝试从新创建的工作簿中删除工作表时出现运行时错误 - Outlook VBA

  26. 26

    ng-switch-when:选择不同的步骤时,是否每次都会重新创建新控制器并删除以前的数据?

  27. 27

    ng-switch-when:选择不同的步骤时,是否每次都会重新创建新的控制器并删除以前的数据?

  28. 28

    在配置更改时重新创建片段

  29. 29

    更改活动主题而不重新创建活动

热门标签

归档