首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在线程列表视图中的进度条中设置下载进度?

如何在线程列表视图中的进度条中设置下载进度?
EN

Stack Overflow用户
提问于 2014-03-13 18:31:34
回答 1查看 207关注 0票数 0

我正在使用下载管理器下载一个文件。我想在列表视图中显示进度条,显示下载状态。我正在计算线程中的进度.When我试图设置线程的进度它没有显示progress.What为了获得进度我应该做什么?以下是我的代码

代码语言:javascript
运行
复制
public Runnable updateprogress = new Runnable() {
    public void run() {
        try {
            Log.v("updateprogress in thread",""+killthread);

            if(killthread==false)
            {
                DownloadManager downloadmanager = (DownloadManager) context.getSystemService(DOWNLOAD_SERVICE);

                DownloadManager.Query q = new DownloadManager.Query();
                q.setFilterById(download_id);
                Cursor cursor = downloadmanager.query(q);
                if (cursor.moveToFirst()) {

                    FileDownloading.setDownload_status(cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)));
                    long fileSize = cursor.getLong(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));
                    long bytesDL = cursor.getLong(cursor.getColumnIndex(DownloadManager
                            .COLUMN_BYTES_DOWNLOADED_SO_FAR));

                    int progress=(int) ((bytesDL * 100.0f) / fileSize);
                    FileDownloading.setDownload_progress((int) ((bytesDL * 100.0f) / fileSize));
                    if(fileSize!=-1){
                        PR_BAR.setIndeterminate(false);
                        FileDownloading.setDownload_progress(progress);
                        PR_BAR.setProgress((int) ((bytesDL * 100.0f) / fileSize));
                        if((int) ((bytesDL * 100.0f) / fileSize)==100){                             
                            killthread=true;
                            if(PR_BAR!=null)
                                PR_BAR.setVisibility(View.GONE);
                            else
                                Log.e("progress bar","null");

                        }

                    }
                    else{
                        PR_BAR.setIndeterminate(true);
                    }

                } else {

                    FileDownloading.setDownload_progress(0);
                    FileDownloading.setDownload_status(-1);
                }
                cursor.close();
                mHandler.postDelayed(this, 5000);
            }
            else{
                updateprogress.wait();
            }

        } catch (Exception e) {
        }
    }


};
EN

回答 1

Stack Overflow用户

发布于 2014-03-13 19:08:48

您应该使用AsyncTask,实现onProgressUpdate()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22375762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档