Android 旋转活动时背景音乐停止

Android 旋转活动时背景音乐停止,android,android-studio,service,media-player,Android,Android Studio,Service,Media Player,如何使服务(背景音乐)在我关闭应用程序或关闭屏幕时关闭,而不是在我切换到其他活动时关闭 目前音乐播放正常,我会一直播放到屏幕关闭或关闭应用程序,但切换到其他活动时也会关闭。它可能是由分配给每个活动的onStop和onPause引起的。请帮我解决这个问题 我的服务: public class MyService extends Service { private final String TAG = null; MediaPlayer player; public IBinder onBin

如何使服务(背景音乐)在我关闭应用程序或关闭屏幕时关闭,而不是在我切换到其他活动时关闭

目前音乐播放正常,我会一直播放到屏幕关闭或关闭应用程序,但切换到其他活动时也会关闭。它可能是由分配给每个活动的
onStop
onPause
引起的。请帮我解决这个问题

我的服务:

public class MyService extends Service {


private final String TAG = null;
MediaPlayer player;

public IBinder onBind(Intent arg0) {

    return null;
}

@Override
public void onCreate() {
    super.onCreate();
    player = MediaPlayer.create(this, R.raw.music;
    player.setLooping(true); // Set looping
    player.setVolume(100, 100);




}

public int onStartCommand(Intent intent, int flags, int startId) {
    player.start();
    return 1;
}

public void onStart(Intent intent, int startId) {
    // TO DO
}

public IBinder onUnBind(Intent arg0) {
    // TO DO Auto-generated method
    return null;
}


protected void onStop() {
    player.pause();
}

public void onPause() {
    player.pause();
}

@Override
public void onDestroy() {
    player.stop();
    player.release();
}

@Override
public void onLowMemory() {

}

}
public void onPause() {
    super.onPause();
    stopService(new Intent(a.this, MyService.class));



}

public void onStop() {
    super.onStop();
    stopService(new Intent(a.this, MyService.class));

}

public void onResume() {
    super.onResume();
    startService(new Intent(a.this, MyService.class));

}

public void onRestart() {
    super.onRestart();
    startService(new Intent(a.this, MyService.class));

}
我的示例活动有以下内容:

public class MyService extends Service {


private final String TAG = null;
MediaPlayer player;

public IBinder onBind(Intent arg0) {

    return null;
}

@Override
public void onCreate() {
    super.onCreate();
    player = MediaPlayer.create(this, R.raw.music;
    player.setLooping(true); // Set looping
    player.setVolume(100, 100);




}

public int onStartCommand(Intent intent, int flags, int startId) {
    player.start();
    return 1;
}

public void onStart(Intent intent, int startId) {
    // TO DO
}

public IBinder onUnBind(Intent arg0) {
    // TO DO Auto-generated method
    return null;
}


protected void onStop() {
    player.pause();
}

public void onPause() {
    player.pause();
}

@Override
public void onDestroy() {
    player.stop();
    player.release();
}

@Override
public void onLowMemory() {

}

}
public void onPause() {
    super.onPause();
    stopService(new Intent(a.this, MyService.class));



}

public void onStop() {
    super.onStop();
    stopService(new Intent(a.this, MyService.class));

}

public void onResume() {
    super.onResume();
    startService(new Intent(a.this, MyService.class));

}

public void onRestart() {
    super.onRestart();
    startService(new Intent(a.this, MyService.class));

}

我有两种建议

1) 让它位于onPause()中,创建一个默认设置为false的标志/布尔值,并且在任何情况下都为true,例如新活动启动、按back press等。因此,如果调用onPause且标志为false,则可以停止音乐

2) 您已经有了后台服务,您可以继续检查前台的活动,如果是主屏幕,您可以停止音乐

编辑:-了解您的应用程序是否不在前台

使用此代码

删除此行:

player.pause()


你能详细解释一下第一种选择吗?