用android下载一个文件,在ProgressDialog显示下载进度

我正在尝试写一个简单的应用,然后应用可以进行更新。为了做成这个,我需要一个简单的功能,就是可以进行下载一个文件,同时在一个ProgressDialog显示出当前的下载进度。我知道如何做ProgressDialog,但是我不知道在同一个地方怎么既下载一个文件又显示当前的进度。

3个回答

有很多下载文件的方法,接下来我将贴出最常用的一些方法;究竟哪一种对你的应用来说最实用取决于你。

  1. 使用AsyncTask,在一个对话框中显示下载进度

这个方法可以让你进行后台处理的同时更新UI(在这种情况下,我们将更新一个进度条)
这是实例代码:

// 声明对话框是你activity的成员字段
ProgressDialog mProgressDialog;

// 举例说明在onCreate中的方法
mProgressDialog = new ProgressDialog(YourActivity.this);
mProgressDialog.setMessage("A message");
mProgressDialog.setIndeterminate(false);
mProgressDialog.setMax(100);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

DownloadFile downloadFile = new DownloadFile();
downloadFile.execute("the url to the file you want to download");

AsyncTask像这样:

// 通常,AsyncTask子类在activity类中进行声明
// 这样,你可以很容易在这里修改UI线程
private class DownloadFile extends AsyncTask<String, Integer, String> {
    @Override
    protected String doInBackground(String... sUrl) {
        try {
            URL url = new URL(sUrl[0]);
            URLConnection connection = url.openConnection();
            connection.connect();
            //这将是有用的,这样你可以显示一个典型的0-100%的进度条
            int fileLength = connection.getContentLength();

            // 下载文件
            InputStream input = new BufferedInputStream(url.openStream());
            OutputStream output = new FileOutputStream("/sdcard/file_name.extension");

            byte data[] = new byte[1024];
            long total = 0;
            int count;
            while ((count = input.read(data)) != -1) {
                total += count;
                publishProgress((int) (total * 100 / fileLength));
                output.write(data, 0, count);
            }

            output.flush();
            output.close();
            input.close();
        } catch (Exception e) {
        }
        return null;
    }

上边的方法(doInBackground)一直在一个后台线程中进行。你不需要做任何UI的任务。另一方面,onProgressUpdate和onPreExecute在UI线程上运行,因此你可以改变进度条

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        mProgressDialog.show();
    }

    @Override
    protected void onProgressUpdate(Integer... progress) {
        super.onProgressUpdate(progress);
        mProgressDialog.setProgress(progress[0]);
    }
}

一旦文件已经下载完,如果你想要执行一些代码(例如mProgressDialog.dismiss()),你也可能想要重写onPostExecute方法。

2.从服务器下载

这个大的问题是:我如何从服务器上更新我的activity?在下个示例中,我们将使用两个你可能没有太注意过的类:ResultReceiver和IntentService. ResultReceiver允许我们从服务器上更新我们的线程的类,IntentService 是Service的一个子类,从那,它可以产生一个线程来处理后台任务(你应该知道,你的应用的Service在同样的进程运行;当你继承Service时,你必须手动生成新的线程来运行CPU的阻塞操作)
可以像这样:

public class DownloadService extends IntentService {
   public static final int UPDATE_PROGRESS= 8344;‘
   public DownloadService() {
       super("DownloadService");
   }
   @Override
   protected void onHandleIntent(Intent intent) {
       String urlToDownload= intent.getStringExtra("url");
       ResultReceiver receiver= (ResultReceiver)
 intent.getParcelableExtra("receiver");
       try {
            URL url= new URL(urlToDownload);
           URLConnection connection= url.openConnection();
            connection.connect();
           // 这将是有用的,这样你可以显示一个典型的0-100%的进度条
           int fileLength= connection.getContentLength();
           // 下载文件
           InputStream input= new BufferedInputStream(url.openStream());
           OutputStream output= new FileOutputStream("/sdcard/BarcodeScanner-debug.apk");
           byte data[] = new byte[1024];
           long total= 0;
           int count;
           while ((count= input.read(data)) != -1) {
                total+= count;
               Bundle resultData= new Bundle();
                resultData.putInt("progress" ,(int) (total* 100 / fileLength));
                receiver.send(UPDATE_PROGRESS, resultData);
                output.write(data, 0, count);
           }
            output.flush();
            output.close();
            input.close();

}catch (IOException e) {

            e.printStackTrace();
       }
       Bundle resultData= new Bundle();
        resultData.putInt("progress" ,100);
        receiver.send(UPDATE_PROGRESS, resultData);
   }
}

向你的manifest中加service

<service android:name=".DownloadService"/>

Activity将像这样

// 像第一个例子那样初始化进度条

//这是你怎么启动下载器
mProgressDialog.show();
Intent intent = new Intent(this, DownloadService.class);
intent.putExtra("url", "url of the file to download");
intent.putExtra("receiver", new DownloadReceiver(new Handler()));
startService(intent);

这是ResultReceiver开始起作用

private class DownloadReceiver extends ResultReceiver{
    public DownloadReceiver(Handler handler) {
        super(handler);
    }

    @Override
    protected void onReceiveResult(int resultCode, Bundle resultData) {
        super.onReceiveResult(resultCode, resultData);
        if (resultCode == DownloadService.UPDATE_PROGRESS) {
            int progress = resultData.getInt("progress");
            mProgressDialog.setProgress(progress);
            if (progress == 100) {
                mProgressDialog.dismiss();
            }
        }
    }
}

3.使用DownloadManager 类(GingerBread ,而且仅仅是最新的)
这个方法是可怕的,你不用担心手动下载文件,处理线程,数据流,等等。GingerBread有一个新的特点,DownloadManager可以让你很容易的下载文件,然后将辛苦的工作给系统做。

/**
 * @ param上下文用来检查设备的版本和DownloadManager信息
 * @如果下载管理器可以用,则返回true
 */
public static boolean isDownloadManagerAvailable(Context context) {
   try {
       if (Build.VERSION.SDK_INT< Build.VERSION_CODES.GINGERBREAD) {
           return false;
       }
       Intent intent= new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        intent.setClassName("com.android.providers.downloads.ui", "com.android.providers.downloads.ui.DownloadList");
       List<ResolveInfo> list= context.getPackageManager().queryIntentActivities(intent,
               PackageManager.MATCH_DEFAULT_ONLY);
       return list.size() > 0;
   } catch (Exception e) {
       return false;
   }
}

方法的名字直接就解释了。一旦你确定DownloadManager是可用的,你可以做下边这些:

String url= "url you want to download";
DownloadManager.Request request= new DownloadManager.Request(Uri.parse(url));
request.setDescription("Some descrition");request.setTitle("Some title");
// 如果为了让它运行,你必须用android3.2编译你的应用程序
if (Build.VERSION.SDK_INT>= Build.VERSION_CODES.HONEYCOMB) {
    request.allowScanningByMediaScanner();
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "name-of-the-file.ext");
// 获得下载服务和队列文件
DownloadManager manager= (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);

下载进度条将在通知栏显示
结语
第一个和第二个方法仅仅是冰山一角。如果你想要你的app是健壮的,这有很多事情需要你记住。这是一个简短的列表:

  • 你必须检查用户是否有可用的网络链接。

  • 确定你有权限((INTERNET and
    WRITE_EXTERNAL_STORAGE);如果你想要检查网络是否可用也可以用ACCESS_NETWORK_STATE

  • 确保你要下载的文件的目录存在,有读写权限

  • 如果下载包太大,之前的下载失败了,你可能需要实现一种方法来恢复下载

  • 如果你允许用户中断下载,他们会很感激你。

除非你已经完全控制了下载过程,否则我强烈建议你使用DownloadManager ,它已经实现了上边列出的大部分功能。

public class EX04_17 extends Activity 
{ 
  private TextView mTextView01;
  private Button mButton01; 
  private ProgressBar mProgressBar01; 
  public int intCounter=0; 
  /* 自定义Handler讯息代码,用以作为识别事件处理 */ 
  protected static final int GUI_STOP_NOTIFIER = 0x108; 
  protected static final int GUI_THREADING_NOTIFIER = 0x109;
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
{ 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
mButton01 = (Button)findViewById(R.id.myButton1);
mTextView01 = (TextView)findViewById(R.id.myTextView1); 
/* 设定ProgressBar widget对象 */ 
mProgressBar01 = (ProgressBar)findViewById(R.id.myProgressBar1); 
/* 调用setIndeterminate方法指派indeterminate模式为false */
mProgressBar01.setIndeterminate(false); 
/* 当按下按钮后,开始线程工作 */ 
mButton01.setOnClickListener(new Button.OnClickListener()
{

@Override
public void onClick(View v) 
{ 
  // TODO Auto-generated method stub 
  /* 按下按钮让ProgressBar显示 */ 
  mTextView01.setText(R.string.str_progress_start);
  /* 将隐藏的ProgressBar显示出来 */ 
  mProgressBar01.setVisibility(View.VISIBLE);
  /* 指定Progress为最多100 */ 
  mProgressBar01.setMax(100); 
  /* 初始Progress为0 */
  mProgressBar01.setProgress(0); 
  /* 起始一个线程 */ 
  new Thread(new Runnable() 
  { 
    public void run()
    { 
      /* 预设0至9,共执行10次的循环叙述 */ 
      for (int i=0;i<10;i++) 
      { 
        try 
        {
          /* 成员变量,用以识别加载进度 */ 
          intCounter = (i+1)*20; 
          /* 每执行一次循环,即暂停1秒 */ 
          Thread.sleep(1000); 
          /* 当Thread执行5秒后显示执行结束 */ 
          if(i==4)
          {
            /* 以Message对象,传递参数给Handler */ 
            Message m = new Message(); 
            /* 以what属性指定User自定义 */ 
            m.what = EX04_17.GUI_STOP_NOTIFIER;
            EX04_17.this.myMessageHandler.sendMessage(m); 
            break; 
            } 
          else 
          {
            Message m = new Message(); 
            m.what = EX04_17.GUI_THREADING_NOTIFIER;
            EX04_17.this.myMessageHandler.sendMessage(m); 
            }
          } 
        catch(Exception e)
        { 
          e.printStackTrace(); 
          }
        } 
      }
    }
  ).start(); 
  } 
}); 
} 


/* Handler建构之后,会聆听传来的讯息代码 */ 
  Handler myMessageHandler = new Handler() 
  { 
    // @Override
    public void handleMessage(Message msg)
    {
      switch (msg.what) 
      { 
      /* 当取得识别为 离开线程时所取得的讯息 */ 
      case EX04_17.GUI_STOP_NOTIFIER:
        /* 显示执行终了 */ 
        mTextView01.setText(R.string.str_progress_done); 
        /* 设定ProgressBar Widget为隐藏 */ 
        mProgressBar01.setVisibility(View.GONE); 
        Thread.currentThread().interrupt();
        break;
        /* 当取得识别为 持续在线程当中时所取得的讯息 */
        case EX04_17.GUI_THREADING_NOTIFIER:
          if(!Thread.currentThread().isInterrupted()) 
          {
            mProgressBar01.setProgress(intCounter); 
            /* 将显示进度显示于TextView当中 */ 
            mTextView01.setText ( getResources().getText(R.string.str_progress_start)+
                "("+Integer.toString(intCounter)+"%)\n"+
                "Progress:"+
                Integer.toString(mProgressBar01.getProgress())+
                "\n"+"Indeterminate:"+
                Boolean.toString(mProgressBar01.isIndeterminate()) ); 
            } 
          break;
          } 
      super.handleMessage(msg);
      } 
    }; 
    }

在线程的try里进行文件下载操作~

yiranwujixian
yiranwujixian 非常感谢您的回答,也解决了我的问题,不过还是第一个答案更详细。
接近 7 年之前 回复

如果你要从网络上下载东西,不要忘记给你的manifest文件添加许可

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.example.helloandroid"
      android:versionCode="1"
      android:versionName="1.0">
   <uses-sdk android:minSdkVersion="10" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
   <uses-permission android:name="android.permission.INTERNET"></uses-permission>
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
   <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
   <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
   </application>
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ProgressDialog对话框形式显示下载进度
此文,仅做为个人学习Android,记录成长以及方便复习!首先是设置UI界面,添加一个下载按钮1.activity_main.xml&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt; &amp;lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; android...
自定义ProgressDialog下载进度框
由于原生的ProgressDialog的进度条的格式是:0/100这样的,这样就不符合某些项目的需求了!刚好最近项目上对这块下载的需要改善,所以我参照了一些网上的大神所写的代码,自己在另外改造了一下!!!如有雷同,也没啥关系!下面请先看效果图,在看代码~效果图: 代码:一:先看下这个自定义的ProgressDialog,我自己添加了一个取消的按钮,测试时是自己模拟了断点更新的功能!import a
android 下载进度显示问题
android 下载显示问题,下载已经写好rn rn功能为一键更新(是用多线程), N个软件(更新的软件用 GridView显示),点击一键更新以后 从第一个开始 图标上显示 0%-100%开始更新,第一个完成以后,第二个 图标显示0-100% 依次 一个 一个的更新。rnrn现在的问题来了 下载的功能已经写好了 显示百分比成了问题, 我在adapter 布局中加了一个 textVIew用来显示百分比, 但是不知道怎么加上去。
Android——下载apk文件,并在通知栏显示下载进度
如何下载apk文件?这里介绍两种方式:一通过异步任务读取文件,二利用系统方法DownloadManager进行下载。
python学习--下载--下载固定文件显示下载百分之的进度
python学习--下载--下载固定文件显示下载百分之的进度
okhttputils显示下载进度
//download the new appprivate void downLoadNewApp(NewVersion.XianzaishiRfBean version) { if (StringUtils.isEmpty(version.getUrl())) { ToastUtils.showToast("新版本的APP url为空");
下载进度比例显示
近几天因为在写高清壁纸的服务器端(基于PHP+MySql),所以好几天没更新博客了,顺便汇报一下高清壁纸的开发进度:服务器端已经改写,原来是一条数据一条数据加,现在是Flash批量上传图片,自动添加数据(这是后台,大家当然看不到啦)。另外,图片数据都放到自己的虚拟主机上了,所以大家可能觉得这几天下载图片特别慢。原来放POCO,速度比较快,但是毕竟是免费的,不放心,怕哪天被人发现了大流量下载,把我帐...
通知栏显示下载进度
使用自定义的通知栏布局,实现的功能:点击按钮,从网络下载一张图片,通知栏显示下载进度,下载完毕就显示图片。rnrn我的代码是只是用AsyncTask去下载,暂时不考虑Service。rnrn我的问题是:在通知栏里面可以显示下载进度,可以下载成功显示,但是在下载过程中,打开通知栏有卡死问题。rnrn我不知道是代码问题,还是要用Service,那位大牛帮我看下,谢谢。rnrn代码清单:rnrn[code=java]rnpublic class CustomProgressNoticeActivity extends Activity rnrn private Button button1;rn private ImageView imageView;rn private NotificationCompat.Builder mBuilder;rn private NotificationManager mNotificationManager;rn private int id = 1000;rn private RemoteViews contentViews;rn private String picPath = "http://pic1a.nipic.com/2008-11-12/2008111215916645_2.jpg";rnrn @Overridern protected void onCreate(Bundle savedInstanceState) rn super.onCreate(savedInstanceState);rn setContentView(R.layout.activity_custom_progress_notice);rnrn button1 = (Button) findViewById(R.id.button1);rn imageView = (ImageView) findViewById(R.id.imageView1);rnrn contentViews = new RemoteViews(getPackageName(), R.layout.notice_download);rn // 通过控件的Id设置属性rn contentViews.setImageViewResource(R.id.imageNo, R.drawable.ic_launcher);rn contentViews.setTextViewText(R.id.tv_title, "图片下载");rnrn mBuilder = new NotificationCompat.Builder(CustomProgressNoticeActivity.this).setSmallIcon(R.drawable.ic_launcher).setTicker("图片下载...");rn mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);rn mBuilder.setContent(contentViews);rn mBuilder.setAutoCancel(true);rnrn button1.setOnClickListener(new OnClickListener() rnrn @Overridern public void onClick(View v) rn new DownImage().execute(picPath);rn rn );rn rnrn class DownImage extends AsyncTask rnrn @Overridern protected Bitmap doInBackground(String... params) rn InputStream input = null;rn Bitmap bitmap = null;rn ByteArrayOutputStream bos = new ByteArrayOutputStream();rn try rnrn HttpClient httpClient = new DefaultHttpClient();rn HttpGet httpGet = new HttpGet(params[0]);rn HttpResponse httpResponse = httpClient.execute(httpGet);rn if (httpResponse.getStatusLine().getStatusCode() == 200) rn input = httpResponse.getEntity().getContent();rn byte data[] = new byte[1024];rn long fileLength = httpResponse.getEntity().getContentLength();rn long total = 0;rn int count;rn while ((count = input.read(data)) != -1) rn total += count;rn publishProgress((int) (total * 100 / fileLength));rn bos.write(data, 0, count);rn rn rnrn bos.flush();rn byte[] imgBytes = bos.toByteArray();rn bitmap = BitmapFactory.decodeByteArray(imgBytes, 0, imgBytes.length);rnrn catch (Exception e) rn e.printStackTrace();rn finally rn try rn if (input != null)rn input.close();rn catch (IOException e) rn e.printStackTrace();rn rn rn return bitmap;rn rnrn @Overridern protected void onPostExecute(Bitmap result) rn imageView.setImageBitmap(result);rn // mBuilder.setDefaults(Notification.DEFAULT_SOUND);rn rnrn @Overridern protected void onProgressUpdate(Integer... values) rn contentViews.setProgressBar(R.id.pb_download, 100, values[0], false);rn contentViews.setTextViewText(R.id.tv_currentPos, values[0] + "%");rn mNotificationManager.notify(id, mBuilder.build());rn rnrn @Overridern protected void onPreExecute() rn contentViews.setProgressBar(R.id.pb_download, 100, 0, false);rn contentViews.setTextViewText(R.id.tv_currentPos, "0%");rn mNotificationManager.notify(id, mBuilder.build());rn rnrn rnrn[/code]rn
如何显示下载进度?
使用的是URLDownloadToFile函数,当下在一个文件时该如何显示出下载的进度?
progress显示下载进度
各位大侠怎么用progress控件显示下载进度?rn我用这个函数下载文件rn CString strI;rn strI=_T("F:\\ypc\\工作\\traderoom\\debug\\ShellUpdate.xml");rn URLDownloadToFile(NULL,Url,strI,0,NULL);rnm_ProCtrl是我的progress控件的变量,怎么让控件显示下载进度条?rn m_ProCtrl.SetRange(0,1000);rn m_ProCtrl.SetStep(1);rn for (int i=0;i<1000;i++)rn rn m_ProCtrl.StepIt();rn
下载进度显示
 一般有下载功能的应用都会有这样一个场景,需要一个图标来标识不同的状态。   一般下载都会有这么几种状态:未开始、等待、正在下载、下载结束,当然有时候会有下载出错的状态。等待状态是指用户点击开始下载,但是线程池中没有空闲的线程来处理该次下载,所以状态为等待。
折腾了半天,总算配置出来了, passenger on unbuntu 9.04
  效果图:       
android 通知栏 下载进度
android 在service里面下载,在通知栏和activity里面同时显示下载进度
1.5 显示进度对话框---ProgressDialog
Android设备的另外一个常见的用户界面功能是在应用程序执行长时间运行的任务时显示的Please wait对话框。例如:应用程序可能需要在登录到服务器以后才能让用户使用或者需要在执行计算后才能显示结果给用户。
android 进度对话框(ProgressDialog)的使用
使用对话框进度条的时候,xml文件中不必定义ProgressBar控件,只定义了button,点击button 方法体showDialog(显示对话框) 补充:对话框Dialog(http://blog.csdn.net/ameyume/article/details/6138488) 对话框一般用于提示信息和与当前应用程序直接相关的小功能.  Android API 支持下列类型的对话...
Android的ProgressDialog进度对话框的使用
ProgressDialog进度对话框: ProgressDialog 继承自AlertDialog,AlertDialog继承自Dialog一、progressDialog的常用方法: mpDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//设置风格为圆形进度条 mpDialog.setTitle(“提示”);//设置标题 mpD
Android提示版本更新+notification显示下载进度
Android提示版本更新+notification显示下载进度
android 线程 下载 APK 显示进度 下载速度
一个线程下载资源 一个线程更新UI 从网络下载一个APK 并弹出安装界面
android文件下载及自定义通知显示下载进度
这几天在实现一个APK版本更新的功能,发现涉及的东西比较繁杂。本着一劳永逸的想法将相关的内容写成了相对比较独立的类供以后参考同时也与大家共享,欢迎大家批评指正 主要实现了一下几个类: (1)文件下载:设计自定义类,只需传入一个Handler、下载地址URLStr及保存路径及可实现下载的功能。handler主要用于线程间通信,跟新通知中的进度条。 对于handler发送消息更新UI
android检测版本更新,通知栏显示下载进度
有些是模拟的,代码也比较乱,有需求的抽着看吧 现在就测试了一下能用,没整理
android观察者设计模式 下载进度同步显示
观察者设计模式简介 观察者可以用来做什么? 比如应用商店下载进度条的问题 在列表中点击下载后,会显示进度状态: 当点击详情页面时,进度条会同步: 实现原理: 利用观察者设计模式 两个进度条分别为两个观察者,同时观察下载这个被观察者,当下载进度发生变化时,两个被观察者同时能够接收到变化的消息,下载进度得到了同步 如何实现?两种方法 实现系统接口 实现
Unity3d下载大型文件并显示进度
由于WWW.progress在安卓上进度一直显示是0,所以只得自己动手写下载函数了。结合网上同行的代码,加上自己优化,总算完成了。 public class ItemScript : MonoBehaviour { string prompt = "ss"; void OnApplicationQuit() { StopAllCoroutines();//关闭所有协程
AsyncTask下载网络图片并显示下载进度
1.AsyncTask概述AsyncTask是一个轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程中更新UI,AsyncTask封装了Thread和Handler,AsyncTask并不适合做特别耗时的任务。AsyncTask是一个抽象的泛型类,提供了Params、Progress、Resault三个参数。Params表示参数类型,Progress表
用进度条显示下载进度的问题?
void __fastcall TForm1::IdFTP1WorkBegin(TObject *Sender,rn TWorkMode AWorkMode, const int AWorkCountMax)rnrnrn Application->ProcessMessages();rn CGauge1->MaxValue = AWorkCountMax;//下载时得不到AWorkCountMax的值,上传时可以。rnrn请高人帮忙!rn
AsyncTask下载网络文件,并显示下载进度
AsyncTask 一些说明 ProgressBar.setProgress(): 刷新UI操作要运行在主线程中,但是setProgress()方法里面自己做了同步操作,所以在子线程中调用 webView.loadUrl(): 耗时操作不能运行在主线程中,但是loadUrl()方法进过特殊处理,所以可以在主线程中调用 异步任务demo test_AsyncTa
Python下载用哪个库?还要显示下载进度
下载示例代码: from bs4 import BeautifulSoup from urllib.request import urlretrieve #下载使用这个库 import requests import os import time if __name__ == '__main__': list_url = [] for num in range(1, 2):...
Android 下载网络url文件并显示进度
首先需要加上权限——访问网络跟存储卡: activity_main.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="matc
ProgressBar(下载网络图片进度显示!)
效果图: [img] [img]http://dl.iteye.com/upload/attachment/0070/0720/2b57f402-673a-331f-bd3f-439b82c55cbf.jpg[/img] [/img] MainActivity代码如下: [code=&quot;java&quot;]package com.pocketdigi.download; import j...
下载进度显示怎么实现?
我想问一下有什么办法可以实现显示ActiveX控件下载的时候进度?还有就是控件下载完后,下载相关数据时的进度显示?用MFC或者ATL的都可以,最好能有详细的例子程序。
模拟ProgressBar下载进度显示
package com.example.administrator.myapplication; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.V...
使用URLSession显示下载进度
iOS开发从入门到精通 基于Xcode9和Swift4视频培训教程,本教程手把手教您学习Xcode9和Swift4语言!一看就懂,一学就会! 视频教程拥有180节课程,包含iOS开发基础知识、数据处理、网络访问、多线程、社会化分享、CoreImage、CoreText、面部检测、Storyboard技巧、关键帧动画、本地通知、陀螺仪相机定位设备、本地化、IAP内购实现营利、App上传审核等超多干货,以及ARKit、CoreML、颜色集、无线调试等iOS11新特性!
版本更新,通知显示下载进度
1.APP检测版本更新后,获取服务器中最新的apk安装包下载路径url; 2.下载安装包,并以通知显示下载进度 3.适配android 8.0
利用通知显示下载进度
NULL 博文链接:https://android-zhang.iteye.com/blog/1883614
PHPExcel下载进度显示条
下载大量数据到Excel表格时,无法查看下载的实时进度。 效果展示: 1、统计数据数量: 2、显示数量: 3、下载进度条展示: 代码: 1、前端显示代码 发货日期 <input type="datetime" placeholder="起始日期" name="
URLDownloadToCacheFile下载如何做进度显示?
URLDownloadToCacheFile或者URLDownloadToFile这两个函数如何在下载时做进度条呀?rnrn在网上查了不少资料,是可以的,但是没有详细的东西,希望高手指点,希望不要光给一网址什么的。rnrn能给出简单示范的追分!rnrn另,我下载了一份urlfile的源码,是可以实现的,但是没看太懂,有没有更简单直观一点的?
使用libcurl显示下载进度
(1)s_get_download_file_length函数获取目标文件大小。 (2)进度条处理函数CURLOPT_PROGRESSFUNCTION,注意设置的回调函数不要忘记了正常情况下return 0;否则将会导致回调异常。 /********************* ftp_down_load
Android下载-实时进度-断点续传
概述带显示进度和断点续传的下载示例 使用Okhttp框架思路获取下载文件的总大小,获取本地文件,如果不存在,就下载,存在,就获取文件的大小, 如果本地文件的大小与网络上文件的大小,就提示下载完成。 如果本地文件大小 < 网络上文件的大小,就跳过已下载的字节数开始下载。具体实现file = new File(path); if (file.exists()){ downloadedLen
Android下载,在通知栏更新进度
Notification长使用的使用的属性常量: DEFAULT_ALL 使用所有默认值,比如声音,震动,闪屏等等 DEFAULT_LIGHTS 使用默认闪光提示 DEFAULT_SOUNDS 使用默认提示声音 DEFAULT_VIBRATE 使用默认手机震动 【说明】:加入手机震动,一定要在manifest.xml中加入权限:<uses-permission android:na
delphi文件进度下载控件
采用线程下载,主界面不卡死,控件源码,直接安装即可。2009及以上版本 可取进度,可取下载速度。完美源码
高分求解:我用NMhttp下载一个文件(10M左右),如何设置进度条显示下载进度?
高分求解:我用NMhttp下载一个文件(10M左右),如何设置进度条显示下载进度?rn分不够可加到500分!
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池