Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 进度条没有';下载时没有响应_Android - Fatal编程技术网

Android 进度条没有';下载时没有响应

Android 进度条没有';下载时没有响应,android,Android,我正在从服务器下载一个文件。当我下载时,我想显示进度条。当我试图下载文件时,它会显示进度条。它在栏中显示0,但我可以下载文件。下面给出了我使用的代码 //预先执行 protected void onPreExecute() { super.onPreExecute(); showDialog(progress_bar_type); } //这是一个下载的ask任

我正在从服务器下载一个文件。当我下载时,我想显示进度条。当我试图下载文件时,它会显示进度条。它在栏中显示0,但我可以下载文件。下面给出了我使用的代码

//预先执行

             protected void onPreExecute() {

                 super.onPreExecute();
                    showDialog(progress_bar_type);
                }
//这是一个下载的ask任务

protected String doInBackground(String... arg0) {
                      int bufferLength = 0;
                    try {
                                             //geting connection
                        URL url = new URL(  weburl);
                        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                        urlConnection.setRequestMethod("GET");
                        urlConnection.setDoOutput(true);
                        urlConnection.connect();
                     // getting file length
                        int lenghtOfFile = urlConnection.getContentLength();

                        File sdcard = Environment.getExternalStorageDirectory();
                        File file = new File(sdcard, "filename.extension");

                        FileOutputStream fileOutput = new FileOutputStream(file);
                        InputStream inputStream = urlConnection.getInputStream();

                        byte[] buffer = new byte[1024];

                        long total = 0; 
                         while ( (bufferLength = inputStream.read(buffer))!= -1) {
                            total += bufferLength ;
                                              //progress
                            publishProgress(""+(int)((total*100)/lenghtOfFile));
                            fileOutput.write(buffer, 0, bufferLength);
                        }
我使用onProgressUpdate来显示结果,但没有使用。它仍然只在0中

 protected void onProgressUpdate(String...values) {
                        // setting progress percentage
                        pDialog.setProgress(Integer.parseInt(values[0]));
                   }
//onPostExecute

                    protected void onPostExecute(final Boolean success) {

                        dismissDialog(progress_bar_type);}
使用AsyncTask的onProgressUpdate()方法更新进度条

请参阅AsyncTask的onProgressUpdate()方法更新进度条


请参阅,您需要在asynctask中再添加一个覆盖方法

@Override
protected void onProgressUpdate(String... values) {
  // TODO Auto-generated method stub
  super.onProgressUpdate(values);
  inDeterminatePB.setProgress(Integer.parseInt((values[0])));
}

您需要在asynctask中再添加一个重写方法

@Override
protected void onProgressUpdate(String... values) {
  // TODO Auto-generated method stub
  super.onProgressUpdate(values);
  inDeterminatePB.setProgress(Integer.parseInt((values[0])));
}
根据您获取文件长度等于-1的问题

这些信息并不总是可用的。通常,您将知道正在下载的文件的长度。根据Web服务器、协议、连接和下载方法的不同,这些信息可能并不总是可用的

您必须修改应用程序,使其能够处理这种情况。我想您会发现,使用不同连接方法的不同设备将提供不同的结果

根据您获取文件长度等于-1的问题

这些信息并不总是可用的。通常,您将知道正在下载的文件的长度。根据Web服务器、协议、连接和下载方法的不同,这些信息可能并不总是可用的



您必须修改应用程序,使其能够处理这种情况。我想您会发现,使用不同连接方法的不同设备将提供不同的结果。

我已经使用了一个on progress更新,但没有使用受保护的void onProgressUpdate(String…progress){//设置进度百分比pDialog.setProgress(Integer.parseInt(进度[0]);}我已经使用了进度更新,但没有使用受保护的void onProgressUpdate(字符串…进度){//设置进度百分比pDialog.setProgress(Integer.parseInt(进度[0]);}我已经使用了进度更新,但没有使用受保护的void onProgressUpdate(String…progress){//设置进度百分比pDialog.setProgress(Integer.parseInt(progress[0]);}是否在doInBackground()方法中使用publishProgress()方法?是的,我在后台的do中使用publishProgress()。这不好吗?我已经使用了它,但没有在progressUpdate(String…progress)上使用受保护的void{//设置进度百分比pDialog.setProgress(Integer.parseInt(progress[0]);}在doInBackground()方法中是否使用publishProgress()方法?是的,我正在使用publishProgress()方法在后台做。这不好吗?我尝试了这个代码,但不幸的是,它也给出了相同的结果。仍然只有在下载顺利时,条形图显示0。请编辑您的问题并添加onPre和onPost函数。我得到了错误,始终长度标签保持为-1。为什么我像@baboos?@baboos你能告诉我吗为什么我不能得到长度。?是因为服务器没有提供长度吗?我尝试了这段代码,但不幸的是,它也给出了相同的结果。仍然只有在下载顺利时,条形图才显示0。请编辑您的问题并添加onPre和onPost函数。我得到了错误,长度始终保持为-1。为什么我喜欢那个@baboos?@baboos你能告诉我为什么我不能得到长度吗?是不是因为服务器没有提供大小你的进度条
max
值是多少?默认情况下,它是10000,将进度值设置在0..100的范围内肯定会使进度接近0。@laalto我使用的最大值是100,还有一件事我总是把长标签设为-1Ok。下一个问题:你是如何执行asynctask的?@laalto在一个按钮上点击code please。一个怀疑是有一个
get()
在阻止UI线程的asynctask上。您的progressbar
最大值是多少?默认情况下,它是10000,并且将进度值设置在0..100范围内肯定会使进度接近0。@laalto我使用的最大值是100,还有一件事我总是将长标签设置为-1Ok。下一个问题:您是如何执行的正在初始化异步任务?@laalto在一个按钮上单击code please。一个怀疑是异步任务上有一个
get()
,阻止了UI线程。