我想知道在调用AsyncTask#onProgressUpdate
后是否可以向AsyncTask#onPostExecute
发出“剩余”电话?我使用它们在同一TextView
上设置文本,我不想设置诸如“完成!”之类的文本。然后通过诸如“几乎在那里 - 90%”
另外,我假设onProgressUpdate
方法与SwingWorker
方法类似,因为对publishProgress
的多次调用可能会在调用onProgressUpdate
之前叠加。我真的想知道参数中“更新”和“更旧”进度更新的位置 - 也就是参数中位置0或位置progress.length
的最新更新?
答案 0 :(得分:2)
publishProgress
的代码是:
protected final void publishProgress(Progress... values) {
sHandler.obtainMessage(MESSAGE_POST_PROGRESS,
new AsyncTaskResult<Progress>(this, values)).sendToTarget();
}
sendToTarget
调用使用Handler#sendMessage
,文档称其“将邮件推送到邮件队列的末尾”。我理解这意味着你不会得到任何乱序更新,他们会堆积起来。此外,对于每个publishProgress
来电,都会有相应的onProgressUpdate
来电。
答案 1 :(得分:0)
为什么呢?因为doInBackground负责调用onProgressUpdate(),所以它不能在它之外发生。检索结果后调用onPostExecute(),因为它确实将它传送给onPostExecute()
此致