如果我每秒都启用刷新线程(刷新用于更新歌曲和进度条的已用时间),我每次尝试关闭时都会创建一个崩溃的音乐播放器。这是代码:
/**
* 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
}
};
这一切在活动中再次起作用,但是当我按下后退按钮时它会崩溃。有任何想法吗?感谢
答案 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次代码。