使用对象而不是字符串处理AsyncTask

时间:2012-05-30 21:25:49

标签: android multithreading listview android-asynctask restful-architecture

如何在Android中处理对象线程? 我试图看看是否有办法使用 AsyncTask 类(doInBackground()onPostExecute()方法)使用对象而不是字符串。 我还想与用户界面进行互动。

是否有一个很好的教程可以开始或任何提示?

由于

1 个答案:

答案 0 :(得分:1)

您可以将AsyncTask子类化,如下例所示。

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));
     }
     return totalSize;
  }

  protected void onProgressUpdate(Integer... progress) {
     setProgressPercent(progress[0]);
  }

  protected void onPostExecute(Long result) {
     showDialog("Downloaded " + result + " bytes");
  }
}

在此示例中,“URL”是参数类型,Long是结果类型(传递给onPostExecute()),Integer是可选的进度指示器。如果未使用,参数类型,进度类型和结果类型可以是“Void”类型。

您可以找到此示例和更长的解释here

与ui的交互必须在onPostExecute()中进行。