为了账号安全,请及时绑定邮箱和手机立即绑定

使用Android下载文件,并在ProgressDialog中显示进度

使用Android下载文件,并在ProgressDialog中显示进度

一只斗牛犬 2019-05-24 13:46:02
使用Android下载文件,并在ProgressDialog中显示进度我正在尝试编写一个更新的简单应用程序。为此,我需要一个简单的功能,可以下载一个文件,并显示当前进度的ProgressDialog。我知道怎么做ProgressDialog,但我不知道如何显示当前进度以及如何首先下载文件。
查看完整描述

4 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

是的,上面的代码可以正常工作。但是如果你正在更新你progressbaronProgressUpdate内容Asynctask 而你按下后退按钮或完成你的活动就会AsyncTask失去你的用户界面。当你回到你的活动时,即使下载是在后台运行,你也会看到没有进度条更新。因此,OnResume()尝试运行一个类似于runOnUIThread计时器任务的线程,该任务progressbar使用从AsyncTask正在运行的背景更新的值来更新你的任务。

private void updateProgressBar(){
    Runnable runnable = new updateProgress();
    background = new Thread(runnable);
    background.start();}public class updateProgress implements Runnable {
    public void run() {
        while(Thread.currentThread()==background)
            //while (!Thread.currentThread().isInterrupted()) {
            try {
                Thread.sleep(1000); 
                Message msg = new Message();
                progress = getProgressPercentage();        
                handler.sendMessage(msg);
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            } catch (Exception e) {
        }
    }}private Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        progress.setProgress(msg.what);
    }};

当您的活动不可见时,不要忘记销毁线程。

private void destroyRunningThreads() {
    if (background != null) {
        background.interrupt();
        background=null;
    }}


查看完整回答
反对 回复 2019-05-24
?
达令说

TA贡献1821条经验 获得超6个赞

我建议你使用我的Project Netroid,它基于Volley。我添加了一些功能,如多事件回调,文件下载管理。这可能会有所帮助。


查看完整回答
反对 回复 2019-05-24
  • 4 回答
  • 0 关注
  • 1712 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信