文件从Android应用程序中的服务器下载问题

时间:2011-01-25 12:33:09

标签: android

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

//+++++++++= 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;
          }  

1 个答案:

答案 0 :(得分:2)

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

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

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