Processo de Download não finaliza apos queda de Internet

Tenho um método utilizando HttpURLConnection para baixar um arquivo via url, o download leva cerca de 10 segundos ±, porem fiz uns testes, se eu cortar a internet quando o download é iniciado o processo fica perdido, ele é ececutado via AsyncTask com progressDialog. Como posso fazer para que o processo de tempo em tempo verifica se realmente está banxaindo ou se a internet caiu?


public boolean DownloadToURL(String fileURL, String saveDir) throws IOException {
        
    	try
    	{
    		
    	//Monta url de conexão
    	URL url = new URL(fileURL);
        HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
        int responseCode = httpConn.getResponseCode();
 
        //Time Out
        //httpConn.setConnectTimeout(3000); 
        //httpConn.setReadTimeout(120000);
        
        // always check HTTP response code first
        if (responseCode == HttpURLConnection.HTTP_OK) {
            String fileName = "";
            String disposition = httpConn.getHeaderField("Content-Disposition");            
 
            if (disposition != null) {
                // extracts file name from header field
                int index = disposition.indexOf("filename=");
                if (index > 0) {
                    fileName = disposition.substring(index + 10,
                            disposition.length() - 1);
                }
            } else {
                // extracts file name from URL
                fileName = fileURL.substring(fileURL.lastIndexOf("/") + 1,
                        fileURL.length());
            }
  
            // opens input stream from the HTTP connection
            InputStream inputStream = httpConn.getInputStream();
            String saveFilePath = saveDir + File.separator + fileName;
             
            // opens an output stream to save into file
            FileOutputStream outputStream = new FileOutputStream(saveFilePath);
 
            int bytesRead = -1;
            byte[] buffer = new byte[BUFFER_SIZE];
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
 
            outputStream.close();
            inputStream.close();
 
            httpConn.disconnect();
            
            return true;
        } else {
            
        	httpConn.disconnect();
        	PRI_Erro = "ERRO012: Método DownloadToURL()";
            return false;
        }
        
    	}catch (Exception e) {
    		PRI_Erro = "ERRO013: Método DownloadToURL(): " + e.getMessage();
    		return false;
        }
        
    }

Olá,
para download de arquivo eu fiz esse método:

public static File downloadFile(String source, File dest, boolean showDownloadProgress) throws IOException {
        URLConnection conn = new URL(source).openConnection();
        conn.setReadTimeout(1800000);
        int contentLength = conn.getContentLength();
        int bytesRead = 0;
        BufferedInputStream in = new BufferedInputStream(conn.getInputStream());
        File tmp = null;
        if (dest != null) {
            if (dest.isDirectory()) {
                tmp = new File(dest, new File(source).getName());
            } else {
                tmp = dest;
            }
        } else {
            tmp = new File(new File(System.getProperty("user.dir")), new File(source).getName());
        }
        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(tmp));
        byte[] buffer = new byte[4096]; // 4kB
        NumberFormat nf = NumberFormat.getNumberInstance();
        nf.setMaximumFractionDigits(1);
        nf.setMaximumFractionDigits(1);
        nf.setGroupingUsed(true);

        long timeStarted = System.currentTimeMillis();
        ProgressMonitor pm = null;
        if (showDownloadProgress) {
            pm = new ProgressMonitor(null, "", "download", 0, contentLength);
            pm.setMillisToPopup(1);
        }

        while (true) {
            int n = in.read(buffer);
            if (n == -1) {
                break;
            }
            out.write(buffer, 0, n);
            bytesRead += n;

            if (pm != null) {
                long timeElapsed = System.currentTimeMillis() - timeStarted;
                double downloadRate = (bytesRead / 1000.0) / (timeElapsed / 1000.0);
                long timeRemaining = (long) (1000 * ((contentLength - bytesRead) / (downloadRate * 1000)));
                String restante;
                if (timeRemaining / 1000 / 60 / 60 > 0) {
                    restante = timeRemaining / 1000 / 60 / 60 + " hora(s) restante(s)";
                } else if (timeRemaining / 1000 / 60 > 0) {
                    restante = timeRemaining / 1000 / 60 + " minuto(s) restante(s)";
                } else if (timeRemaining / 1000 > 0) {
                    restante = timeRemaining / 1000 + " segundo(s) restante(s)";
                } else {
                    restante = "Conclusão desconhecida";
                }

                pm.setProgress(bytesRead);
                pm.setNote(restante);
            }
        }
        in.close();
        out.close();
        return tmp;
    }

A questão de finalizar quando desconecta, isso oque define é o timeout. Talvez vc possa apenas colocar uma timeout nesse seu código.