2011-01-25 57 views
0

我正在使用此代码段从服务器下载mp4文件。通常文件得到正确下载, 但有时我的下载过程自动停止下载。进度条停止递增。是否有任何停止下载的内核进程。在Android应用程序中从服务器下载文件时出现问题

//+++++++++= FUnction Call ++++++++++++++++ 

DOWNLOAD_FILE_NAME = "demo.mp4"; 
grabURL("mp4 file server url"); 

//+++++++++++++++++++++++++++++++++++++++++ 

public void grabURL(String url) { 

      new GrabURL().execute(url); 

    } 
private class GrabURL extends AsyncTask<String, Void, Void> { 
        private final HttpClient Client = new DefaultHttpClient(); 
        private String Content; 
        private String Error = null; 
        private ProgressDialog Dialog = new ProgressDialog(SlideShow.this); 

        protected void onPreExecute() { 


        showDialog(DIALOG_PROGRESS); 
       mProgressDialog.setProgress(0); 

        } 

      protected Void doInBackground(String... url) { 
       int count; 

       try { 
        URL url2 = new URL(url[0]); 
        URLConnection conexion = url2.openConnection(); 
        conexion.setUseCaches(true); 
        conexion.connect(); 

        // this will be useful so that you can show a tipical 0-100% progress bar 
        int lenghtOfFile = conexion.getContentLength(); 
        mProgressDialog.setMax(lenghtOfFile); 
        // downlod the file 
        InputStream input = new BufferedInputStream(url2.openStream()); 
        OutputStream output = new FileOutputStream(DOWNLOAD_FILE_NAME); 

        byte data[] = new byte[1024]; 

        while ((count = input.read(data)) != -1) { 

         mProgressDialog.incrementProgressBy(data.length); 
          output.write(data, 0, count); 
        } 

        output.close(); 
        input.close(); 
       } catch (Exception e) {} 
       return null; 
      } 

回答

2

在移动设备上,互联网连接必须被视为非常不可靠。

您的代码显示下载方法,但没有连接管理。 如果您的互联网连接由于某种原因而停止,您的代码将无法重新启动。

您可以使用ConnectivityManager上的广播接收器:http://developer.android.com/reference/android/net/ConnectivityManager.html 在连接断开时通知它,并在连接重新启动时从那里重新开始下载。

相关问题