我有一個按鈕,它的點擊監聽器上播放一個音頻文件。如果在音頻文件播放過程中再次點擊該按鈕,則該應用程序會崩潰。什麼是解決方案?如何處理播放音頻文件的運行時異常?
這裏是參考一些代碼:
private OnClickListener btnMercyListener = new OnClickListener()
{
public void onClick(View v)
{
// Toast.makeText(getBaseContext(),
// "Mercy audio file is being played",
// Toast.LENGTH_LONG).show();
if (status==true)
{
mp.stop();
mp.release();
status = false;
}
else
{
mp = MediaPlayer.create(iMEvil.this,R.raw.mercy);
//mp.start();
try{
mp.start();
status= true;
//mp.release();
}catch(NullPointerException e)
{
Log.v("MP error",e.toString());
}
}
mp.setOnCompletionListener(new OnCompletionListener(){
// @Override
public void onCompletion(MediaPlayer arg0) {
mp.release();
status = false;
}
}
);
}
};
你爲什麼不嘗試抓住一個異常? – Kiril 2010-03-15 08:49:46
它從來沒有在模擬器上顯示我。我必須在設備上測試它。當連續點擊8次或更多次時,應用程序崩潰。 我已經使用了一個名爲status的公共布爾變量,並嘗試將其值設置爲僅在現有聲音未播放時播放。不知道isPlaying()布爾方法能幫助我嗎?我困在此刻。任何線索? – 2010-03-15 10:26:14
如果應用程序崩潰,我很確定它會拋出異常,所以嘗試捕獲異常將它寫入日誌,然後調試異常。 – Kiril 2010-03-15 16:16:45