You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MediaBrowserServiceCompat中stopSelf()无法停止服务问题求助

解决MediaBrowserServiceCompat停止功能失效的问题

我帮你分析下这个问题,基于UniversalMusicPlayer的架构,调用stopSelf()没效果通常是因为MediaSession状态没正确清理或者服务仍被客户端绑定导致的,咱们一步步来修复:

1. 完善MediaSessionCallback的onStop逻辑

你当前的onStop()只调用了stopSelf(),但缺少了MediaPlayer、音频焦点和MediaSession状态的关键清理步骤,系统会认为服务仍在活跃状态。修改你的回调代码:

@Override
public void onStop() {
    super.onStop();
    // 1. 停止并释放MediaPlayer资源
    if (mMediaPlayer != null) {
        mMediaPlayer.stop();
        mMediaPlayer.release();
        mMediaPlayer = null;
    }
    // 2. 释放音频焦点
    AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    audioManager.abandonAudioFocus(MediaPlayerService.this);
    // 3. 更新MediaSession状态并标记为非活跃
    mMediaSession.setPlaybackState(new PlaybackStateCompat.Builder()
            .setState(PlaybackStateCompat.STATE_STOPPED, 0, 0f)
            .build());
    mMediaSession.setActive(false);
    // 4. 最后停止服务
    stopSelf();
}

2. 确保Activity断开MediaBrowser连接

如果你的Activity仍保持着和MediaBrowserService的绑定连接,服务会因为绑定关系而不会被销毁。在HomeActivity的onDestroy()方法里添加断开逻辑:

@Override
protected void onDestroy() {
    super.onDestroy();
    // 断开MediaBrowser连接
    if (mMediaBrowser != null && mMediaBrowser.isConnected()) {
        mMediaBrowser.disconnect();
    }
}

3. 检查服务的Manifest配置

确认你的MediaPlayerService在Manifest中的配置没有异常,避免意外的服务重启:

<service
    android:name=".MediaPlayerService"
    android:exported="true">
    <intent-filter>
        <action android:name="android.media.browse.MediaBrowserService" />
    </intent-filter>
</service>

保持默认启动模式即可,不需要额外添加android:launchMode属性。

为什么之前的代码没用?

  • MediaSession如果还处于active状态,系统会将服务标记为"正在处理媒体播放",不会允许它被销毁。
  • MediaPlayer未释放的话,音频资源仍被占用,服务也会保持存活。
  • 如果有客户端(比如你的Activity)还绑定着服务,stopSelf()只会停止started状态的服务,但绑定状态的服务会继续存在直到所有客户端断开。

按照上面的步骤修改后,停止功能应该就能正常工作了。

内容的提问来源于stack exchange,提问作者Saman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:09:42