Каков наилучший способ загрузки файлов из сети программно в Android?

В моем приложении, загружающем множество файлов из Интернета, они были около 200 МБ файлов (Zipped). Так может ли кто-нибудь сказать мне лучший способ скачать файлы. На самом деле моя озабоченность связана с выполнением кода. Пожалуйста, запишите идею или какой-нибудь код, если возможно, загрузить. Как обрабатывать ошибки и сетевые проблемы между ними.

Поблагодарив вас, Шринивас

Ответ 1

Вот код, который я недавно написал для этого:

    try {
      URL u = new URL("http://your.url/file.zip");
      InputStream is = u.openStream();

      DataInputStream dis = new DataInputStream(is);

      byte[] buffer = new byte[1024];
      int length;

      FileOutputStream fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory() + "/" + "file.zip"));
      while ((length = dis.read(buffer))>0) {
        fos.write(buffer, 0, length);
      }

    } catch (MalformedURLException mue) {
      Log.e("SYNC getUpdate", "malformed url error", mue);
    } catch (IOException ioe) {
      Log.e("SYNC getUpdate", "io error", ioe);
    } catch (SecurityException se) {
      Log.e("SYNC getUpdate", "security error", se);
    }

Загружает файл и помещает его на вашу SD-карту.

Возможно, вы можете изменить это в соответствии с вашими потребностями.:)

Ответ 2

Я хочу отметить, что Android 2.3 (API Level 9) представляет новый системный сервис, называемый DownloadManager. Если вы в порядке, поддерживая только 2.3, вам обязательно нужно его использовать. Если нет, вы можете:

  • Проверьте, доступен ли DownloadManager и используйте его, если он есть. Если это не (Android < 2.3), загрузите файл самостоятельно, например, как описано в xil3.
  • Не используйте DownloadManager вообще, если вы считаете, что это слишком много работает. Тем не менее, я твердо верю, что вы выиграете от его использования.