我正在尝试制作一个显示音乐进度的搜索栏,当您从搜索栏拖动拇指项目时,音乐进度会改变其实际值。所有逻辑都在异步任务中实现,问题是当我从 UIthread 取消我的异步任务并再次执行时,方法publishProgress() 根本没有执行。其余的方法(doinbackground、onpreexecute..)每次都能正常工作。任何人都知道为什么会这样?关于我缺少的线程的一些事情。谢谢!
seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
mediaplayer.seekTo(actual);
update = new updateUI();
update.execute();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
update.cancel(true);
}
@Override
public void onProgressChanged(SeekBar seekBar,
int progress, boolean fromUser) {
}
});
异步任务:
private class updateUI extends AsyncTask<Void, Integer, Void> {
@Override
protected Void doInBackground(Void... params) {
while (mediaplayer.isPlaying() || isCancelled()) {
//code
publishProgress(actual);
}
return null;
}
@Override
protected void onPreExecute() {
//code
}
protected void onProgressUpdate(Integer... progress) {
//code
}
}