【发布时间】:2018-06-29 21:08:21
【问题描述】:
我有一个多活动应用程序。在主要活动中,启动了一个播放音乐的服务。当我浏览活动时,音乐仍在播放(这是我想要的),但是当我单击主页按钮并且应用程序进入后台时,音乐仍在播放(这是我不想要的)。
我的第一个解决方案是在主活动暂停时执行“stopService()”,但这会阻止音乐在其他活动中播放。
在 onStop 方法中尝试了相同的方法,出现了同样的问题。
问:当整个应用进入后台时,如何停止播放音乐(停止服务)?
我的服务代码:
public class MediaService extends Service {
private MediaPlayer player;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
player = MediaPlayer.create(this, R.raw.music);
player.setLooping(true);
player.start();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
player.stop();
}
我开始/停止服务:
music_intent = new Intent(this, MediaService.class);
startService(music_intent);
stopService(music_intent);
附注感谢所有答案,但正如我所说,onStop 方法会在我更改我不想要的活动时停止音乐。
【问题讨论】:
-
为什么首先要有服务?服务背后的要点是在您的 UI 不 处于前台时执行工作。如果您只想在应用程序处于前台时完成工作,请不要使用服务。使用普通的 Java 对象。要了解您的应用何时进入和退出前台,请考虑
ProcessLifecycleOwner。
标签: java android service media-player