我是android新手。我正在尝试使用asyncTask。我知道有一些叫做onProgressUpdate的东西。
我从在线服务器下载数据,总数据大约是2000。
在后台Async中我在for循环中做了以下内容我继续发布I的值,如下所示:
@Override
protected String doInBackground(JSONArray... params)
{
for (int i = 0; i < params[0].length(); i++)
{
//I DO MY BACKGROUND PROCESS
publishProgress(i);
}
return null;
}
protected void onProgressUpdate(Integer... values) {
Log.e("Value", "onProgressUpdate - " + values[0]);
}
这实际上是逐个打印计数直到2000年。现在我将如何显示计数百分比。像1%,2%到100%。
由于
答案 0 :(得分:0)
试试这个:
使用double值而不是Integer
protected void onProgressUpdate(Double... values) {
double percentage = (values[0]/2000)*100;
Log.e("Value", "onProgressUpdate - " + percentage+"%");
}
答案 1 :(得分:0)
公式在评论中说明,但动态计算更安全,而不是硬编码到2000.
AsyncTask<JSONArray, Integer, String> task = new AsyncTask<JSONArray, Integer, String>() {
private int maxProgress;
@Override
protected String doInBackground(JSONArray... params) {
maxProgress = params[0].length();
for (int i = 0; i < maxProgress; i++) {
//I DO MY BACKGROUND PROCESS
publishProgress(i);
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
Log.e("Value", "onProgressUpdate - " + (values[0] * 100 / maxProgress) + "%");
}
};