ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android-从Dropbox下载文件期间未调用onProgressUpdate()

2019-11-27 15:27:35  阅读:209  来源: 互联网

标签:dropbox android


我从最近的两天开始一直处于停滞状态..在我的情况下,未调用onProgressUpdate()..因此,它没有更新进度条..任何人都可以看看并提出建议..谢谢.这是我的代码

package com.example.downloadupload;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Environment;
import android.util.Log;
import com.dropbox.client2.DropboxAPI;
import com.dropbox.client2.ProgressListener;
import com.dropbox.client2.android.AndroidAuthSession;
import com.dropbox.client2.exception.DropboxException;

public class DownloadFile extends AsyncTask<Void, Long, Boolean> {

    DropboxAPI<AndroidAuthSession> dDBApi;
    Context dContext;
    private final  ProgressDialog uDialog;
    private long dFileLen;
    long bytess;

    public DownloadFile(Context context,
        DropboxAPI<AndroidAuthSession> mDBApi) {
        dDBApi=mDBApi;
        dContext=context.getApplicationContext();
        uDialog = new ProgressDialog(context);
        uDialog.setMax(100);
        uDialog.setMessage("Downloading Image");
        uDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        uDialog.show();
    }

@Override
protected Boolean doInBackground(Void... params) {

    String path1= Environment.getExternalStorageDirectory()+"/log.txt";
    BufferedOutputStream out=null;
    try {
        File file = new File(path1);
        out = new BufferedOutputStream(new FileOutputStream(file));
        dDBApi.getFile("/log.txt", null,out,new ProgressListener() {

          /* @Override
           public long progressInterval() {
               // Update the progress bar every half-second or so
               return 500;
           }*/

            @Override
            public void onProgress(long bytes, long total) {
                // TODO Auto-generated method stub
                bytess=bytes;
                publishProgress(bytes);
            }
        });
    } catch (DropboxException e) {
        Log.e("DbExampleLog", "Something went wrong while downloading.");
    } catch (FileNotFoundException e) {
        Log.e("DbExampleLog", "File not found.");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        if (out != null) {
            try {
                out.close();
            } catch (IOException e) {}
        }
    }
    return null;
}

@Override
protected void onProgressUpdate(Long... progress) {
    // TODO Auto-generated method stub
    super.onProgressUpdate(progress);
    int percent = (int)(100.0*(double)progress[0]/bytess + 0.5);
    uDialog.setProgress(percent);
    System.out.println("Hi progressing");
}

@Override
protected void onPostExecute(Boolean result) {
    // TODO Auto-generated method stub
    super.onPostExecute(result);

    uDialog.dismiss();
    System.out.println("calling post execute");
}


}

解决方法:

代替这个

int percent = (int)(100.0*(double)progress[0]/bytess + 0.5);

用这个

int percent = (int)(100.0*(double)progress[0]/TotalsizeOfFile  + 0.5);

你可以取消评论

       @Override

       public long progressInterval() 

       {

           // Update the progress bar every half-second or so

           return 500;

       }

它为我工作.

标签:dropbox,android
来源: https://codeday.me/bug/20191127/2075405.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有