在mainactivity中,我创建了一个处理程序作为实例变量:
SeekBar seek_bar;
MediaPlayer player;
Handler seekHandler = new Handler();
然后,我在MainActivity中使用以下两种方法在音频在媒体播放器中播放时更新搜索栏:
public void getInit() {
seek_bar = (SeekBar) findViewById(R.id.seek_bar);
}
Runnable run = new Runnable() {
@Override
public void run() {
seekUpdation(); **//Exception comes here while closing the app**
}
};
public void seekUpdation() {
seek_bar.setProgress(mMediaPlayer.getCurrentPosition());
seekHandler.postDelayed(run, 1000);
}
我面临的问题是,当音频正在运行并且用户使用设备后退按钮关闭应用程序时。我得到NullPointerException。活动的销毁方法是:
@Override
protected void onDestroy() {
super.onDestroy();
if (mMediaPlayer != null && mMediaPlayer.isPlaying()) {
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
}
}
最佳答案
从onDestroy中的处理程序中删除所有排队的消息/回调。我敢打赌,它会在调用onDestroy之后运行最后一条消息。