Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.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_Asynchronous_Task_Progress - Fatal编程技术网

Android 为什么进度更新中没有显示正确的进度

Android 为什么进度更新中没有显示正确的进度,android,asynchronous,task,progress,Android,Asynchronous,Task,Progress,我使用AsyncTask从数据库获取数据。 为了通知用户下载了多少数据,我使用了ProgressDialog和onProgressUpdated,但它不会显示“正确”的进度。在我的例子中,它只显示“正在加载…0%” 异步任务 { ... @凌驾 受保护的整数doInBackground(字符串…参数) { 对于(int i=0;i

我使用AsyncTask从数据库获取数据。 为了通知用户下载了多少数据,我使用了ProgressDialog和onProgressUpdated,但它不会显示“正确”的进度。在我的例子中,它只显示“正在加载…0%”

异步任务
{    
...
@凌驾
受保护的整数doInBackground(字符串…参数)
{
对于(int i=0;i
你有什么建议吗

谢谢你试试这个 出版进度(100/(大小-I))

在您的onProgressUpdate中,请执行此操作
progressDialog.setMessage(“加载…”+值[0])

因为您要在整数值之间执行除法。不,当然不会,但是(int)((value[0]/(float)value[1])*100),可能会感谢您的建议-但是Blackbelt已经有了解决方案-我有一个integerdivison。受保护的void onProgressUpdate(Float…值)和this.publishProgress((Float)i,(Float)size);解决了这个问题
AsyncTask<>
{    
...
    @Override
    protected Integer doInBackground(String... params)
    {
        for (int i = 0; i < size; i++)
        {
          ...
          this.publishProgress(i, size);            
          Thread.sleep(500); // Just to make the Progress visible
        }
     }

    @Override
    protected void onProgressUpdate(Integer... values)
    {
        progressDialog.setMessage("Loading... " + values[0] / values[1]*100 + "%");
    }
}