android进度对话框不显示百分比

时间:2012-04-17 23:08:19

标签: android progressdialog

对话框没有显示百分比如果我使用了代码

    final Handler handler = new Handler() {
    public void handleMessage(Message msg) {
        int total = msg.arg1;
        mProgressDialog.setProgress(total);
        if (total >= 100){
            try {
                mProgressThread.sleep(100);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
            mProgressThread.setState(ProgressThread.STATE_DONE);
        }
    }
};

并在线程代码中

while ((count = input.read(data)) != -1) {
                total += count;
                Message msg = mHandler.obtainMessage();
                msg.arg1 = total;
                mHandler.sendMessage(msg);
                output.write(data, 0, count);
            }

怎么了?如果我使用总++;而是总+ =计数;规模提高到19%但不提高到100%。这是因为文件的下载速度比while循环100迭代更快。 如果我使用总+ =计数;它显示0但是文件下载的比例为100%。

1 个答案:

答案 0 :(得分:1)

您似乎不会将任何百分比信息传递给处理程序,而是将读取字符的总绝对数量传递给处理程序。当你写总++时;你传递了读取例程接收数据的次数以及写入总数+ =计数的次数;你传递了你在完整的阅读例程中读到的所有字符的总数。

如果要显示百分比,则需要从0到100传递进度。要做到这一点,你需要知道你将读取多少个字符并写入总数+ =计数;并传递total / CountOfAllCharactersToRead。这样你就可以正确地将%-fraction分配给proress对话框。

只是另一个评论。如果您的阅读程序非常快,则可能会发生UI不经常更新,并且您不会看到进度条实际上从0到100运行。