Android——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);
    }


}

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


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值