2013-07-14 34 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