zoukankan      html  css  js  c++  java
  • 《第一行代码》学习笔记37-服务Service(4)

    一个比较完整的自定义AsyncTask写成如下:

    class DownloadTask extends AsyncTask<Void, Integer, Boolean> {
        
        @Override
        protected void onPreExecute() {
            progressDialog.show(); //显示进度对话框
        }
        
        @Override
        protected Boolean doInBackground(Void...params) {
            try {
                while (true) {
                    int downloadPercent = doDownload(); //这是一个虚构的方法
                    publishProgress(downloadPercent);
                    if (downloadPercent >= 100) {
                        break;
                    }
                }
            } catch (Exception e) {
                return false;
            }
            return true;
        }
        
        @Override
        protected void onProgressUpdate(Integer...values) {
            //在这里更新下载进度
            progressDialog.setMessage("Downloaded" + values[0] + "%");
        }
        
        @Override
        protected void onPostExecute(Boolean result) {
            progressDialog.dismiss(); //关闭进度对话框
            //在这提示下载结果
            if (result) {
                Toast.makeText(context, "Download succeeded", Toast.LENGTH_SHORT).show();
            }
        }
    }
    

    使用AsyncTask的诀窍:在doInBackground()方法中去执行具体的耗时任务,在onProgressUpdate()方法中进行UI操作,在
    onPostExecute()方法中执行一些任务的收尾工作。

  • 相关阅读:
    Mysql
    JavaScript常用事件
    css
    HTML
    判断pc还是手机打开跳转到别的网页
    queue 队列
    兼容firstChild和firstElementChild
    总结各种width,height,top,left
    原生js提取非行间样式
    ie8 不支持media
  • 原文地址:https://www.cnblogs.com/Iamasoldier6/p/5048298.html
Copyright © 2011-2022 走看看