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()方法中执行一些任务的收尾工作。

  • 相关阅读:
    6.Redis 哈希(Hash)的命令
    5.redis中String类型数据操作的命令
    4.redis中的key命令
    3.redis客户端连接服务器
    Bomblab
    leetcode multiply-strings
    datalab
    leetcode max-points-on-a-line
    os
    python 实现简单的端口扫描器
  • 原文地址:https://www.cnblogs.com/Iamasoldier6/p/5048298.html
Copyright © 2011-2022 走看看