在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;
}
}
答案 0 :(得分:1)
从onDestroy中的处理程序中删除所有排队的消息/回调。我敢打赌,它会在onDestroy之后运行最后一条消息。