Java 当我关闭应用程序时如何停止声音

Java 当我关闭应用程序时如何停止声音,java,android,audio,background,media-player,Java,Android,Audio,Background,Media Player,我无法在关闭应用程序或按下后退按钮时停止声音。声音是在后台播放的,没有任何小部件来停止声音,所以这些是我的代码。如何修复它是有用的。我需要什么? 谢谢:) 您必须覆盖活动的onPause() 在活动类中编写此代码 @Override protected void onPause() { super.onPause(); if(s1.isPlaying()){ s1.stop(); s1.release(

我无法在关闭应用程序或按下后退按钮时停止声音。声音是在后台播放的,没有任何小部件来停止声音,所以这些是我的代码。如何修复它是有用的。我需要什么? 谢谢:)


您必须覆盖活动的
onPause()

在活动类中编写此代码

 @Override
    protected void onPause()
    {
       super.onPause();
       if(s1.isPlaying()){
            s1.stop();
            s1.release();
            }
       if(s2.isPlaying()){
            s2.stop();
            s2.release();
            }
    }

要在应用程序被发送到后台时禁用MediaPlayer,可以在应用程序中的每个活动上调用
onPause()
onStop()

public static void muteIfSentToBackground(final Context context) {
        ActivityManager am = (ActivityManager)     context.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
    if (!tasks.isEmpty()) {
        ComponentName topActivity = tasks.get(0).topActivity;
        if (!topActivity.getPackageName().equals(context.getPackageName())) {
            if(s1 != null){
                s1.stop();
                s1.release();
                s1 =null;
            }
            if(s2 != null){
                s2.stop();
                s2.release();
                s2 = null;
            }
        }
    }
}

当我关闭应用程序时,如何停止声音
我认为需要覆盖
onDestroy()
但在调用onDestroy()onStop()之前不覆盖?这里说,当您单击“上一步”按钮或尝试完成()活动时,事件调用如下:onPause()onStop()onDestroy()onPause()也应该在onStop()之前调用,因此您应该只需要这两个生命周期方法之一中的代码,具体取决于您想要的行为(如果您希望音乐在活动部分被覆盖时停止,例如如果出现对话框,则在暂停时停止)我没有附加代码您可以在代码上显示吗请我是新的我没有附加代码您可以在代码上显示吗请我是新的
public static void muteIfSentToBackground(final Context context) {
        ActivityManager am = (ActivityManager)     context.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
    if (!tasks.isEmpty()) {
        ComponentName topActivity = tasks.get(0).topActivity;
        if (!topActivity.getPackageName().equals(context.getPackageName())) {
            if(s1 != null){
                s1.stop();
                s1.release();
                s1 =null;
            }
            if(s2 != null){
                s2.stop();
                s2.release();
                s2 = null;
            }
        }
    }
}
    @Override
    protected void onPause() {
        super.onPause();
        muteIfSentToBackground(this);}

    @Override
    protected void onStop() {
        super.onStop();
            muteIfSentToBackground(this);}