我在理解 android 中 Asynctask 参数的使用时遇到了麻烦。
Android Developers 文档解释如下:
AsyncTask must be subclassed to be used.
The subclass will override at least one method (doInBackground(Params...)),
and most often will override a second one (onPostExecute(Result).)
下面是一个子类化的例子:
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
创建后,任务执行起来非常简单:
new DownloadFilesTask().execute(url1, url2, url3);
对于
AsyncTask
的扩展,我不需要传入任何参数,但我需要覆盖 doInBackground()
、 onProgressUpdate()
和 onPostExecute()
。为什么我必须将 Void,Void,Void
插入 AsyncTask<>
?参数有什么作用?
最佳答案
从文档中它说使用 Void
只是将类型标记为未使用。您不必在 AsyncTask 中有类型。
关于Android AsyncTask 参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34486469/