Media PLayer 在 onPause 和 onResume 中为 null

Media PLayer is null in onPause and onResume

我有一个媒体播放器作为全局变量,我想在 onResume 中恢复它并在 onPause 中暂停它,但两者都给我 nullpointerException。我不知道为什么它给媒体播放器作为空。我不认为我们需要日志,因为我知道错误是 nullpointerexception,下面的行 mentioned.Here 是我的代码

      MediaPlayer md;
      int position;
@Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_slide_show);
        md = new MediaPlayer();
        md.setAudioStreamType(AudioManager.STREAM_MUSIC);
        md = MediaPlayer.create(this, R.raw.tone);
        md.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            md.start();
        }
    });
@Override
    public void onPause(){
       if(md != null ){
       md.pause();
       position = md.getCurrentPosition();
    }
      super.onPause();

}
@Override
public void onResume(){
    super.onResume();
    if(md != null){
        md.start();    NullPointerException here
        md.seekTo(position);
    }

}

@Override
public void onStop(){
    if(md != null){
    md.stop();      NullPointerException here
    md.release();
    md = null;}
    super.onStop();
}

我认为您误解了 android 应用程序循环。当您按下主页按钮退出应用程序时,onStop() 会与 onPause() 一起被调用。

由于这个原因,MediaPlayer 每次都会被释放,所以您会收到空指针异常。

我相信,您想在应用程序完全关闭时停止音乐,然后将 onStop() 替换为 onDestroy()...这是唯一的问题与空指针异常相关..