【问题标题】:How to stop MediaBrowserServiceCompat?如何停止 MediaBrowserServiceCompat?
【发布时间】:2017-04-14 10:58:03
【问题描述】:

我的服务:

public class MusicService extends MediaBrowserServiceCompat {
...
}

我的活动:

public class MediaActivity extends AppCompatActivity{
private MediaBrowserCompat mMediaBrowser;
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mMediaBrowser = new MediaBrowserCompat(this,
                new ComponentName(this, MusicService.class), mConnectionCallback, null);
        mMediaBrowser.connect();
}

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mMediaBrowser.disconnect();
    }

我想在 UI 中添加按钮关闭,但是如何停止 MusicService?它继续在后台投射。

【问题讨论】:

  • 如果在 MusicService 中以 startForeground() 后跟 stopself() 开始,则需要调用 stopForeground(true)

标签: android android-mediaplayer mediabrowserservice mediabrowserservicecompat mediabrowser


【解决方案1】:

我已经在MediaSessionConnection 中声明了一个方法:

class MediaSessionConnection( val context: Context, private val serviceComponent: ComponentName ) { ... fun release() { mediaBrowser.disconnect() mediaController.sendCommand("disconnect", null, null) } ... }

MusicService:

class MusicService : MediaBrowserServiceCompat() { override fun onCreate() { super.onCreate() ... mediaSessionConnector = MediaSessionConnector(mediaSession, object : DefaultPlaybackController() { override fun onCommand(player: Player?, command: String?, extras: Bundle?, cb: ResultReceiver?) { if (command == "disconnect") { stopForeground(true) stopSelf() } } override fun getCommands(): Array { return arrayOf("disconnect") } }) } }

我并不声称这是完全停止服务的正确方法,但这是我在挣扎了几个小时后得出的解决方案。

如果mediaBrowser.disconnect() 没有被执行,那么stopSelf() 不会销毁服务(通过告诉“销毁服务”我预计onDestroy() 会被调用)。

如果不显式执行stopForeground()stopSelf(),只需执行mediaBrowser.disconnect() 不会破坏服务。

【讨论】:

  • MediaSessionConnector 是否仅适用于 exoplayer2?我不使用它我使用 MediaPlayer..
【解决方案2】:

从任何地方停止: getActivity().stopService(new Intent(getActivity().getApplicationContext(), YourServiceName.class));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    相关资源
    最近更新 更多