美文网首页
AsyncTask详解

AsyncTask详解

作者: Skypew | 来源:发表于2017-11-15 20:41 被阅读48次

一.什么是AsyncTask

它本质上是封装了线程池和handler的异步框架,主要执行异步任务

二.AsyncTask的用法

public class UpdateInfoAsyncTask  extends AsyncTask<Integer,Integer,String>{


  private TextView textView;
  private ProgressBar progressBar;


    public UpdateInfoAsyncTask(TextView textView, ProgressBar progressBar) {
        this.textView = textView;
        this.progressBar = progressBar;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        textView.setText("UI线程,开始执行 ");

    }

    @Override
    protected String doInBackground(Integer... params) {
        int i;
        for (i=10;i<=100;i+=10){
            //发送当前 进度
            publishProgress(i);
        }
        return i+params[0].intValue()+"";
    }


    /**
     * 当前进度
     * @param values
     */
    @Override
    protected void onProgressUpdate(Integer... values) {
        super.onProgressUpdate(values);
        int vlaue =values[0];
        progressBar.setProgress(vlaue);

    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);

        textView.setText("异步操作执行结果返回"+s);

    }
}

三.AsyncTask的机制原理

image.png

四.AsyncTask的的注意事项

1.内存泄漏

解决方法和hander类似 可以把AsyncTask设置为静态的 ,弱引用
onDestroy中调用 cancel(boolean)方法取消任务

2.生命周期

不会随着activity 的销毁而销毁,需要调用cancel方法 ,保证程序稳定
没有取消可能会崩溃 因为ui线程依托的activity已销毁了

3.结果丢失

由于屏幕旋转和 内存不够结果被杀掉 ,activity重新启动
AsyncTask会持有之前activity的引用,引用无效,会导致 publishProgress 更新无效

4.串行or并行

做不了太高并发,太耗时的操作

1.6版本以前 是串行
1.6到2.3是并行
2.3以后 默认串行 可以调用 executeOnExecutor(Executor)来执行并行(不建议并行)0
最简单的方法法就是使用executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, Params... params)

相关文章

  • android 源码分析(五AsyncTask机制详解)

    AsyncTask机制详解 AsyncTask用法回顾 AsyncTask类主要用到的几个内部回调函数有:doIn...

  • 3.2异步消息处理机制-AsyncTask

    AsyncTask详解 什么事AsyncTask AsyncTask的使用方法三个参数(泛型指定的三个)5个方法 ...

  • 第三十周 AsyncTask

    话题:AsyncTask 的使用方式和版本演进 关键字:艺术探索、Google 参考答案 AsyncTask 详解...

  • Android AsyncTask 详解

    Android AsyncTask 详解 内容划分 AsyncTask简介 简单使用 繁杂部分和源码浅析 一些坑的...

  • AsyncTask详解

    一个Android 已封装好的轻量级异步类。属于抽象类,即使用时需实现子类。同时方便在子线程更新UI。封装了Han...

  • AsyncTask详解

    AsyncTask是什么? AsyncTask这个类允许在后台执行操作并在UI线程上更新结果而不用必须操纵主线程或...

  • AsyncTask详解

    文章转自郭霖:http://blog.csdn.net/guolin_blog/article/details/1...

  • AsyncTask详解

    一.什么是AsyncTask 它本质上是封装了线程池和handler的异步框架,主要执行异步任务 二.AsyncT...

  • AsyncTask详解

    android中实现异步任务有两种方式Handler和AsyncTask handler需要为每个任务创建一个新的...

  • AsyncTask详解

    AsyncTask的使用大家应该都不陌生,内部原理就是线程池与Handler的运用。简单的使用 现在有个疑问是 怎...

网友评论

      本文标题:AsyncTask详解

      本文链接:https://www.haomeiwen.com/subject/dlvhvxtx.html