我在理解 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/

10-13 04:23