Android InputStream Internet Disconnect

No meu programa Android, tenho algum código que baixa um arquivo. Isso funciona bem, mas como em um telefone celular, você pode ser desconectado a qualquer momento, preciso alterá-lo. Ele se reconecta e retoma o download quando você está no meio do caminho e alguém liga / perde a recepção do celular / etc. Não consigo descobrir como detectar o InputStream parou de funcionar. Veja o código abaixo:

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);
    }

Quando eu perco a conexão com a Internet, meu log mostra:

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

E, em seguida, meu programa fica paralisado por um tempo ((len1 = etc.) Preciso fazê-lo quando a Internet for desconectada. Espero que a Internet seja conectada novamente e reinicie o download.

questionAnswers(1)

yourAnswerToTheQuestion