Android——AsyncTask(异步)简介

    xiaoxiao2021-12-14  18

    个人理解具体应用 AsyncTask分析简单使用复杂应用


    个人理解

    我们都知道android4.0之后网络不能在主线程中访问,所以访问网络只能在其他线程或者在异步中进行。如果只是单纯的实现一次访问网络功能,例如登录,使用AsyncTask是比较好的。也可以把AsyncTask当成一个小线程


    具体应用

    ①AsyncTask分析

    1、AsyncTask参数分析

    new AsyncTask<Params, Progress, Result>

    第一个参数Params,是给它自己的doInBackground方法传参,返回值类型为第三个Result参数的类型 第二个参数Progress,是给它自己的onProgressUpdate方法传参


    2、AsyncTask方法执行过程分析(只说主要的)

    doInBackground执行完后,把返回值传参给onPostExecute方法 doInBackground一般执行耗时方法 onPostExecute一般处理doInBackground的结果,例如显示UI


    ②简单使用

    new AsyncTask<String, Integer, String>() { @Override protected String doInBackground(String... arg0) { // TODO Auto-generated method stub return null; } @Override protected void onPostExecute(String result) { // TODO Auto-generated method stub super.onPostExecute(result); } }.execute(); //execute即为执行AsyncTask

    ③复杂应用

    public class DownImageTask extends AsyncTask<String, Integer, Bitmap> { Bitmap bitmap; ImageView imageView; String url; public DownImageTask(String url, ImageView imageView) { // TODO Auto-generated constructor stub this.imageView = imageView; this.url = url; } // 后台进程的执行 @Override protected Bitmap doInBackground(String... params) { try { URL url = new URL(this.url); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); InputStream inputStream = conn.getInputStream(); bitmap = BitmapFactory.decodeStream(inputStream); inputStream.close(); } catch (Exception e) { e.printStackTrace(); } return bitmap; } // 运行于UI线程,对后台任务的结果做出处理,doInBackground方法执行的结果作为此方法的参数 @Override protected void onPostExecute(Bitmap result) { super.onPostExecute(result); imageView.setImageBitmap(result); } }

    上述代码是获取网络图片并显示 参数传递我用的是构造方法


    转载请注明原文地址: https://ju.6miu.com/read-968347.html

    最新回复(0)