Java/Android - взаимодействие со сторонним классом - вопрос от новичка
JAVA*
Практикуюсь в программировании на Java для Android.
Встал вопрос, который не могу корректно решить и хочу услышать ваш совет.
Пример упрощен, но суть следующая — пишу программу для Android, которая получает список ссылок с сервера и скачивает их на телефон, вот два класса, которые используются для загрузки:
Класс Download скачивает файл с указанного адреса в указанное место, класс DownloadBatch позволяет скачивать пакетно используя класс Download.
Приложение использует только класс DownloadBatch, процесс загрузки пусть отображается в ProgressDialog в формате — имя загружаемого файла/сколько скачано.
Каким образом отображать эту информацию в реальном времени в ProgressDialog?
Главный нюанс — классы Download и DownloadBatch править нельзя.
В голову пришли только две идеи:
Я не уверен, что это лучшие варианты и хотел бы узнать мнение более опытных людей — как лучше поступать в таких ситуациях.
Встал вопрос, который не могу корректно решить и хочу услышать ваш совет.
Пример упрощен, но суть следующая — пишу программу для Android, которая получает список ссылок с сервера и скачивает их на телефон, вот два класса, которые используются для загрузки:
public class Download {
public long getTotal() {
return total;
}
protected void setTotal(long total) {
this.total = total;
}
private long total = 0;
public boolean download(String link, String path) throws IOException {
// download the file
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(outputFile);
int count = 0;
byte data[] = new byte[1024];
while ((count = input.read(data)) != -1) {
this.setTotal(this.getTotal() + count);
output.write(data, 0, count);
}
return true;
}
}
public class DownloadBatch {
public boolean download(ArrayList<String[]> tasks) throws IOException {
Download loader = new Download();
for (String[] task : tasks) {
loader.download(task[0], task[1]);
}
return true;
}
}
* This source code was highlighted with Source Code Highlighter.Класс Download скачивает файл с указанного адреса в указанное место, класс DownloadBatch позволяет скачивать пакетно используя класс Download.
Приложение использует только класс DownloadBatch, процесс загрузки пусть отображается в ProgressDialog в формате — имя загружаемого файла/сколько скачано.
Каким образом отображать эту информацию в реальном времени в ProgressDialog?
Главный нюанс — классы Download и DownloadBatch править нельзя.
В голову пришли только две идеи:
- Юзать АОП, к примеру с помощью AspectJ
- Написать класс, объект которого будет периодично опрашивать класс DownloadBatch
Я не уверен, что это лучшие варианты и хотел бы узнать мнение более опытных людей — как лучше поступать в таких ситуациях.