小编Jay*_*Jay的帖子

为什么我的计算百分比在Android SDK中变为负值?

我希望这将是一个我想念的傻事,但我一直在敲击键盘试图弄清楚我哪里出错了.

我正在尝试从新线程中的DownloadManager更新ProgressBar.这是正常工作,直到中途,ProgressBar重新开始重新开始.从输入一些调试代码,我已将问题隔离到这一行:

final int dl_progress = (bytes_downloaded*100)/bytes_total;
Run Code Online (Sandbox Code Playgroud)

dl_progress正在通过文件下载中途转为负面!下面的相关代码块和日志输出:

    @Override
    public void run() {

        boolean downloading = true;

        while (downloading) {

            DownloadManager.Query q = new DownloadManager.Query();
            q.setFilterById(downloadId);

            Cursor cursor = manager.query(q);
            cursor.moveToFirst();
            int bytes_downloaded = cursor.getInt(cursor
                    .getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
            int bytes_total = cursor.getInt(cursor
                    .getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));

            if (cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)) == DownloadManager.STATUS_SUCCESSFUL) {
                downloading = false;
                getActivity().runOnUiThread(new Runnable() {
                    public void run() {
                        mProgressBar.setVisibility(View.INVISIBLE);
                    }
                });
            }

            final int dl_progress = (bytes_downloaded*100)/bytes_total;

            Log.d("Download", bytes_downloaded + " of " + bytes_total + " (" + dl_progress + …
Run Code Online (Sandbox Code Playgroud)

java android integer-overflow android-progressbar

0
推荐指数
2
解决办法
2084
查看次数