Android应用程序中的进度条闪烁
我正在尝试制作一个流媒体音乐播放器,但是我正在尝试实现的SeekBar有点问题。目前,它在播放第一首歌曲时动作正确。我可以正确地搜索,它会在另一个线程中自我更新。我遇到的问题是,当一首新歌开始时,SeekBar会从最后一首歌的持续时间闪烁到当前歌曲的当前进度。任何帮助都将不胜感激 希克巴宣言Android应用程序中的进度条闪烁,android,multithreading,progress-bar,progress,seekbar,Android,Multithreading,Progress Bar,Progress,Seekbar,我正在尝试制作一个流媒体音乐播放器,但是我正在尝试实现的SeekBar有点问题。目前,它在播放第一首歌曲时动作正确。我可以正确地搜索,它会在另一个线程中自我更新。我遇到的问题是,当一首新歌开始时,SeekBar会从最后一首歌的持续时间闪烁到当前歌曲的当前进度。任何帮助都将不胜感激 希克巴宣言 progress = (SeekBar) findViewById(R.id.seekBar1); progress.setOnSeekBarChangeListener(new OnSee
progress = (SeekBar) findViewById(R.id.seekBar1);
progress.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if(fromUser) {
media.seekTo(progress);
}
else {
}
}
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
});
SeekBar在单独线程中更新
int current = 0;
int total = media.getDuration();
progress.setMax(total);
progress.setIndeterminate(false);
while(media!=null && current < total){
try {
Thread.sleep(1000);
current = media.getCurrentPosition();
progress.setProgress(current);
} catch (Exception e) {
e.printStackTrace();
}
};
int电流=0;
int total=media.getDuration();
进度。setMax(总计);
进度。设置不确定(false);
while(媒体!=null&¤t
您开始执行进度更新的线程似乎从未终止,这意味着即使在歌曲结束后,它仍将每秒更新一次进度
current
很可能是罪魁祸首。根据我的记忆,当前位置将不会(或至少不保证)一直计算到总长度,因此循环永远不会终止,您应该在MediaPlayer中添加一个,以便在歌曲结束时得到可靠的通知。您不应该直接从单独的线程操作视图。使用View.post
或runOnUiThread
来更新视图
。能否提供线程类的完整声明及其交互方式?媒体是否未设置为空?您是否验证过电流是否达到总电流值?