Android Monkey跑出來的一個Bug:IllegalStateException

今天Monkey跑出來的一個Bug:

E/AndroidRuntime( 3359): FATAL EXCEPTION: Timer-0

E/AndroidRuntime( 3359): Process: com.android.soundrecorder, PID: 3359
E/AndroidRuntime( 3359): java.lang.IllegalStateException
E/AndroidRuntime( 3359):  at android.media.MediaPlayer.isPlaying(Native Method)

E/AndroidRuntime( 3359):  at com.android.soundrecorder.SoundRecorder$MyTimerTask.run(SoundRecorder.java:1700)


調用stopPlay()函數時出錯了,原因是10毫秒刷新太快了,即便stopPlay()中作了mTimerTask.cancel();mTimerTask = null;操作,還是走到了代碼第9行。

解決辦法:刷新時間調大點(300ms,500ms)或者加鎖吧。

代碼片段:

    

Timer timer = new Timer();
        if (null != mTimerTask) {
            mTimerTask.cancel();
            mTimerTask = null;
        }
        mTimerTask = new MyTimerTask();
        timer.schedule(mTimerTask, 0, 10);

class MyTimerTask extends TimerTask {
        @Override
        public void run() {
            if (isChanging == true) {
                return;
            }
            if (null != mTimerTask) {
                if (null != mPlayer) {
                    if (mPlayer.isPlaying()) {
                        mSeekBarLeftTime = mPlayer.getCurrentPosition() / 1000;
                        mHandler.sendEmptyMessage(LEFT_TIME);
                    }
                }
            }
        }
    }
public void stopPlay() {
        LogUtil.v(TAG, "stopplay()");
        if (null != mTimerTask) {
            mTimerTask.cancel();
            mTimerTask = null;
        }
        if (mPlayer == null) 
            return;
        mPlayer.stop();
        mPlayer.release();
        mPlayer = null;
    }

發佈了14 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章