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()...这是唯一的问题与空指针异常相关..
我有一个媒体播放器作为全局变量,我想在 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()...这是唯一的问题与空指针异常相关..