首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时下载文件-处理它的最佳方法

同时下载文件-处理它的最佳方法
EN

Stack Overflow用户
提问于 2011-05-14 10:50:21
回答 1查看 1K关注 0票数 1

我正在编写一个针对API级别9或更高级别的应用程序。因此,我决定使用DownloadManager提供的类。我的问题是第2部分- 1。当我下载单个文件时,如何显示下载进度。我看到我可以从查询下载管理器实例中获得COLUMN_TOTAL_SIZE_BYTES和COLUMN_BYTES_DOWNLOADED_SO_FAR。但我不确定是否必须将查询放在线程中并实现循环,以便定期轮询以更新进度条。我猜,我不确定,如何定期查询-它将进入主线程还是作为runnable实现-我不清楚的机制。2.如果我必须支持多个文件下载,那么我是否必须在它自己的线程中启动每个文件下载?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2011-05-14 12:05:41

如果你是在2.3或更高版本上构建,你不需要这样做,它会自动显示在状态栏中。像这样做,来自普通软件的代码,

代码语言:javascript
复制
    private static final int DOWNLOAD_SUCCESSFUL = 100;
private static final int DOWNLOAD_FAILED = 99;
    private DownloadManager mgr=null;

在create上执行此操作,

代码语言:javascript
复制
`mgr = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);    

        registerReceiver(onComplete,
                 new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

`

然后在文件下载的点击事件上,

lastDownload = mgr.enqueue(new DownloadManager.Request(uri) .setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE) .setAllowedOverRoaming(false) .setTitle("Test File") .setDescription("Download zipped file.") .setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, file_name));

然后是一个广播接收器,当你下载完成时,

代码语言:javascript
复制
BroadcastReceiver onComplete=new BroadcastReceiver() {
        public void onReceive(Context ctxt, Intent intent) {

            findViewById(R.id.start).setEnabled(true);  

            File unzipFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),file_name);            

            //check for new file download
            //extract if it's a new download

            if (unzipFile.exists()) {
                new UnzipFile().execute();              
            } else {
                Toast.makeText(Main.this, "Download not found!", Toast.LENGTH_LONG).show();
            }           
        }
    };`
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5999504

复制
相关文章

相似问题

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