【发布时间】:2019-01-08 22:46:38
【问题描述】:
您好,我在使用 asynctask 时遇到问题。我播放了一首歌曲,然后将持续时间更新到进度条。但是当我播放一首新歌时,进度条不要回到第 0 位,进度条会继续使用旧值 这是我的代码:
class Task(context: Context, progressBar: ProgressBar) : AsyncTask<Int, Int, String>() {
@SuppressLint("StaticFieldLeak")
private var progressBar: ProgressBar? = progressBar
private var count = 0
override fun doInBackground(vararg input: Int?): String {
while (count <= input[0]!!) {
count++
publishProgress(count)
Thread.sleep(1000)
if (isCancelled){
count=0
}
}
return "Task completed"
}
override fun onPreExecute() {
progressBar!!.progress = 0
}
override fun onProgressUpdate(vararg values: Int?) {
progressBar!!.progress = values[0]!!
}
}
当我播放歌曲时:
override fun onItemClicked(position: Int, song: Song) {
val secondsDuration = song.duration!! / 1000
activity!!.pgbSong.max = secondsDuration
val task = Task(context!!, activity!!.pgbSong)
if (task.status == AsyncTask.Status.RUNNING) {
task.cancel(true)
}
task.execute(song.duration)
}
【问题讨论】:
-
如果解决了您的问题,请尝试改善社区并接受@Demigod 的回答。快乐编码!
标签: android android-asynctask kotlin android-progressbar