Работа с AsyncTask с объектами, а не строки

1

Как я могу работать с объектами и потоками в Android? Я пытаюсь понять, есть ли способ использовать методы AsyncTask Class (doInBackground() и onPostExecute()) с объектами, а не с строками. Я также хотел бы взаимодействовать с пользовательским интерфейсом.

Есть ли хороший учебник для начала или любого намека?

благодаря

Теги:
multithreading
android-asynctask
listview
restful-architecture

1 ответ

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 - дополнительный индикатор прогресса. Тип параметра, тип выполнения и тип результата могут иметь тип "Пустота", если они не используются.

Вы можете найти этот пример и более подробное объяснение здесь

Взаимодействие с ui должно происходить в onPostExecute().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню