Java 为什么MediaPlayer在android应用程序重启状态下停止?

Java 为什么MediaPlayer在android应用程序重启状态下停止?,java,android,android-mediaplayer,Java,Android,Android Mediaplayer,我制作了一个音板应用程序,它可以正常工作,但当我按下手机上的home(主页)按钮时 我点击将应用程序带回来,当我按下按钮时,它停止工作(崩溃) 我的错误日志猫= Process: soundboard.test, PID: 5429 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.start()' on a null object refere

我制作了一个音板应用程序,它可以正常工作,但当我按下手机上的home(主页)按钮时 我点击将应用程序带回来,当我按下按钮时,它停止工作(崩溃)

我的错误日志猫=

Process: soundboard.test, PID: 5429
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.start()' on a null object reference
        at soundboard.test.MainActivity$6.onClick(MainActivity.java:96)
        at android.view.View.performClick(View.java:4780)
        at android.view.View$PerformClick.run(View.java:19866)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5293)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

您是否已授予所需的权限?检查它,并请添加一些更多的代码到存储等,或者如果问题是活动生命周期,只需添加此代码

@Override
public void onRestart()
{
    super.onRestart();
     recreate();
    finish();
    overridePendingTransition(0, 0);
    startActivity(getIntent());
    overridePendingTransition(0, 0);
}

您是否已授予所需的权限?检查它,并请添加一些更多的代码到存储等,或者如果问题是活动生命周期,只需添加此代码

@Override
public void onRestart()
{
    super.onRestart();
     recreate();
    finish();
    overridePendingTransition(0, 0);
    startActivity(getIntent());
    overridePendingTransition(0, 0);
}

当应用程序转到后台时,媒体播放器设置为null,但当活动再次转到前台时,不会重新创建媒体播放器(
onCreate()
)。 您应该在生命周期的成对回调中处理对象的初始化和销毁,如

  • onCreate()
    onDestroy()

  • onStart()
    onStop()

  • onResume()
    onPause()


当应用程序转到后台时,媒体播放器设置为null,但当活动再次转到前台时,媒体播放器不会重新创建(
onCreate()
)。 您应该在生命周期的成对回调中处理对象的初始化和销毁,如

  • onCreate()
    onDestroy()

  • onStart()
    onStop()

  • onResume()
    onPause()


您应该了解
活动生命周期
以及音频文件所需的权限。
如果我是你,我会使用下面的权限

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />  


onCreate()。检查应用程序转到后台时调用的方法。学习。这里是一个链接

您应该了解
活动生命周期
以及音频文件所需的权限。
如果我是你,我会使用下面的权限

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />  


onCreate()。检查应用程序转到后台时调用的方法。学习。这里是一个链接

添加恢复方法,如下所示

 @Override
        protected void onResume() {
            super.onResume();
            if (mp != null) {
                //if want to start again when open app
                mp.start();

                //play when click button
    //            iaminevitable.setOnClickListener(new View.OnClickListener() {
    //                @Override
    //                public void onClick(View view) {
    //                    mp.start();
    //                }
    //            });
            }
        }

addonresume方法如下所示

 @Override
        protected void onResume() {
            super.onResume();
            if (mp != null) {
                //if want to start again when open app
                mp.start();

                //play when click button
    //            iaminevitable.setOnClickListener(new View.OnClickListener() {
    //                @Override
    //                public void onClick(View view) {
    //                    mp.start();
    //                }
    //            });
            }
        }

这是主要的活动,这是所有的代码,我有更多的代码,但它们是相同的mp2,mp3等,我是一个初学者,所以我不知道我必须添加什么样的权限。检查此代码,并尝试了解一些事情,如mediaplayer是如何工作的,如何授予权限等,代码现在不再崩溃。谢谢。这是主要活动,这是其中的所有代码。我有更多的代码,但它们都是相同的mp2、mp3等,我是初学者,所以我不确定我必须添加什么样的权限。检查此代码并尝试了解mediaplayer如何工作,如何授予权限等内容。代码现在不再崩溃。谢谢。如果您有时间,是否可以给我写一行代码,因为我不知道如何在我的代码中实现它,我将非常感激。例如,您可以将
mp=…
行移动到
onStart()
而不是
onCreate()
如果您有时间的话,您是否可以给我写一行代码,因为我不知道如何在我的代码中实现它,我将非常感激。例如,您可以将
mp=…
行移动到
onStart()
而不是
onCreate()