关於AsyncTask

AsyncTask非同步任务,或称异步任务,是一个相当常用的类别,是专门用来处理背景任务与UI的类别。

主执行绪又称UI执行绪(UI Thread),任何有关UI的东西都在主执行绪中执行,若是你的程序占据主执行绪很久,使用者体验会非常的差,或者会直接崩溃关闭

进行网路下载或其他活动时 不允许使用UI主执行绪

值得一提的是
此类在 API 级别 30 中已弃用。
请改用标准java.util.concurrent
关於concurrent有时间再来专门写一篇

最常见的AsyncTask 就是载入网路上的图片URL 设定为你的Image图片

基础架构

//载入档案任务类别 继承了AsyncTask 
//其中三个参数分别是 1.传入参数种类 2.回传进度 3.回传资料
private class DownloadImageTask  extends AsyncTask<String, Void, Bitmap> {
     
      ImageView mImageView;
      //建构式
        public DownloadImageTask(ImageView bmImage) {
            this.mImageView = bmImage;
        }
       //背景执行中的方法 取得URL图片并转为Bitmap 也就是BMP点阵图
          protected Bitmap doInBackground(String... urls) {
            String urldisplay = urls[0];
            Bitmap mIcon11 = null;
            try { 
                InputStream in = new java.net.URL(urldisplay).openStream();
                mIcon11 = BitmapFactory.decodeStream(in);
            } catch (Exception e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return mIcon11;
        }
   //执行後 处理动作 这边算是主UI线程了
     protected void onPostExecute(Bitmap bmp) {
            mImageView.setImageBitmap(bmp);
        }
 }

执行方法
new DownloadImageTask().execute(url1, url2, url3);


<<:  关於取得旧版 macOS 这件事

>>:  Day10 职训(机器学习与资料分析工程师培训班): 专题讨论

day27 : k8s backup/restore/migrate with velero(下)

昨天介绍了velero的概念,今天来配置一套velero出来看看吧。 配置velero非常的简单,只...

未知的第一天 - 行程整理

Hi 这里是小将,这次铁人赛拖了一阵子才终於参赛了,老样子,还是没囤稿,就来看看这三十天究竟能玩出甚...

Day4-Go Go Go!第一只 golang!

Hello rookie! 在经过昨天安装完环境後,相信大家已经迫不及待要写第一支程序了吧。 相信大...

Day 16 - SNMP、Banner Grabbing 与 Firewall Rules

出於书本 Chapter 8. Network Infrastructure SNMP 扫描 什麽是...

业务驱动者和推动者(Business Drivers and Enablers)

-波特的价值链(Porter’s Value Chain) 业务就是提供产品和服务以创造价值并实现...