Каков наилучший способ загрузки файлов из сети программно в Android? - PullRequest
10 голосов
/ 04 февраля 2011

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

Благодарю вас, Шринивас

Ответы [ 2 ]

16 голосов
/ 04 февраля 2011

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

    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 голосов
/ 04 февраля 2011

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

  1. Проверить, доступен ли DownloadManager, и использовать его, если он есть.Если это не так (Android <2.3), загрузите файл самостоятельно, например, как описано в xil3. </li>
  2. Не используйте DownloadManager вообще, если считаете, что это слишком много работы.Однако я твердо верю, что вы выиграете от его использования.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...