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);