2013-07-14 30 views
0

在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; 
    } 
} 

回答

1

从onDestroy中的处理程序中删除任何排队的消息/回调。我敢打赌,它会在调用onDestroy之后运行最后一条消息。

+0

该API是seekHandler.removeCallbacksAndMessages(null); – Sandeep