Android InputStream Internet Disconnect - PullRequest
       23

Android InputStream Internet Disconnect

7 голосов
/ 26 февраля 2009

В моей программе для Android у меня есть код, который загружает файл. Это работает нормально, но, поскольку на мобильном телефоне вы можете быть отключены в любое время, мне нужно изменить его, если он переподключается и возобновляет загрузку, когда вы на полпути и кто-то звонит / вы теряете прием сотового телефона / и т.д. Я не могу понять, как определить, что InputStream перестал работать. Смотрите код ниже:

InputStream in = c.getInputStream();

    byte[] buffer = new byte[8024];
    int len1 = 0;

    while ( (len1 = in.read(buffer)) > 0 ) {
        Log("-"+len1+"- Downloaded.");
        f.write(buffer,0, len1);
        Thread.sleep(50);
    }

Когда я теряю подключение к Интернету, мой журнал показывает:

Log: -8024- Downloaded.
Log: -8024- Downloaded.
Log: -8024- Downloaded.
Log: -8024- Downloaded.
Log: -6024- Downloaded. (some lower number)

А потом моя программа просто зависает на время ((len1 = и т. Д. Мне нужно сделать так, чтобы, когда интернет отключался, я ждал, чтобы интернет снова подключился, а затем возобновил загрузку.

1 Ответ

2 голосов
/ 26 февраля 2009

Взгляните сюда: http://developer.android.com/reference/java/nio/channels/SocketChannel.html

РЕДАКТИРОВАТЬ (на основе комментариев): http://www.jguru.com/faq/view.jsp?EID=72378

Так что мысли, основанные на вышеизложенном .... вы можете поместить чтение в поток и периодически проверять, прекратил ли поток чтение данных (возможно, обновите общую переменную). Если он прервал соединение и поток и справился с ним, вам нужно.

Другая альтернатива - не использовать HTTPURLConnection и работать с битами, которые вам нужны.

...