Android загрузчик Java-функция загрузки файлов - PullRequest
0 голосов
/ 05 июля 2018

Я новичок в Android, я ничего не нашел для ожидаемой функции загрузки файлов. Например в c #:

bool result;
result = await DownloadMyFileAsync(url, file);
MessageBox.Show(result.ToString());

Как я могу сделать это в Android Java?

1 Ответ

0 голосов
/ 05 июля 2018

Вы не можете просто дождаться завершения асинхронной задачи в приложении для Android. Система предотвращает сетевые вызовы в основном потоке. Вы должны реализовать AsyncTask (см. https://developer.android.com/reference/android/os/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));
         // 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");
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...