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()
你能详细解释一下第一种选择吗?