关闭刷新线程时崩溃

时间:2012-12-28 21:34:51

标签: android

如果我每秒都启用刷新线程(刷新用于更新歌曲和进度条的已用时间),我每次尝试关闭时都会创建一个崩溃的音乐播放器。这是代码:

/**
 * Background Runnable thread
 * */
private Runnable mUpdateTimeTask = new Runnable() {
       public void run() {
           long totalDuration = mp.getDuration();
           long currentDuration = mp.getCurrentPosition();

           // Displaying Total Duration time
           songTotalDurationLabel.setText(""+utils.milliSecondsToTimer(totalDuration));
           // Displaying time completed playing
           songCurrentDurationLabel.setText(""+utils.milliSecondsToTimer(currentDuration));

           // Updating progress bar
           int progress = (int)(utils.getProgressPercentage(currentDuration, totalDuration));
           //Log.d("Progress", ""+progress);
           songProgressBar.setProgress(progress);

           // Running this thread after 100 milliseconds
           mHandler.postDelayed(this, 100); //this line is causing errors
       }
    };

这一切在活动中再次起作用,但是当我按下后退按钮时它会崩溃。有任何想法吗?感谢

1 个答案:

答案 0 :(得分:1)

尝试使用onPause()中的removeCallbacks()或类似方法停止以后的回调:

mHandler.removeCallbacks(mUpdateTimeTask);

  

如果我每秒启用刷新线程

您似乎希望每秒运行一次代码,但是您使用...

// Running this thread after 100 milliseconds
mHandler.postDelayed(this, 100); //this line is causing errors

了解默认情况下不会在新线程中创建处理程序和Runnables,并且100毫秒延迟会每秒执行10次代码。