gpt4 book ai didi

android - 如何停止 MediaBrowserServiceCompat?

转载 作者:行者123 更新时间:2023-11-29 19:16:23 25 4
gpt4 key购买 nike

我的服务:

public class MusicService extends MediaBrowserServiceCompat {
...
}

我的 Activity :

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?它继续在后台转换。

最佳答案

我在 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()不会破坏服务。

关于android - 如何停止 MediaBrowserServiceCompat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43410175/

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