AsynTask应用全解

设计理念

  1. 将UI线程和子线程的【启动,停止,通信】模板化,并隐藏java线程技术
  2. UI线程负责,启动(execute)、取消(cancel)异步工作(子线程)
  3. UI线程负责,预启动处理逻辑,进度更新回调逻辑,异步工作取消回调逻辑,异步工作完成回调逻辑
  4. 子线负责:后台处理逻辑处理

AsynTask 内部代码框架(内部注释是我加的说明)

 public abstract class AsyncTask<Params, Progress, Result> {

// sub Thread 后台处理逻辑处理
    protected abstract Result doInBackground(Params... var1);
  //UI Thread 预启动处理逻辑
    protected void onPreExecute() {
        throw new RuntimeException("Stub!");
    }
// UI Thread 异步工作完成回调逻辑
    protected void onPostExecute(Result result) {
        throw new RuntimeException("Stub!");
    }
//UI Thread 进度更新回调逻辑
    protected void onProgressUpdate(Progress... values) {
        throw new RuntimeException("Stub!");
    }
//UI Thread 异步工作取消回调逻辑
    protected void onCancelled(Result result) {
        throw new RuntimeException("Stub!");
    }
//UI Thread 异步工作取消回调逻辑
    protected void onCancelled() {
        throw new RuntimeException("Stub!");
    }
}

AsynTask的doInBackground处理基本结构

@Override
        protected Result doInBackground(String... params) {
            Result result;//获取的方法
            //这是在后台子线程中执行的
           while(xxxx){
              //....某些操作
              //判断是否被UI cancel
              if(isCanceled()) return result; ////该对象将会出现在onCanceled()的实参中
              publishProgress(Progress... values);//推送进度数据
            }
            return result; //该对象将会出现在onPostExecute()的实参中
        }

UI Thread的工作处理基本结构

AsynTask task=new XXXAsynTask();
task.execute(data1,data2,data3)//data类型为Params泛型指定,并会出现在doInBackground()中
....
if(条件) task.cancel() ;//取消异步任务

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32
  • 1 概述 在操作系统中,线程是操作系统调度的最小单元,同时线程又是一种受限的系统资源,即线程不可能无限制地...
    Kevin_Junbaozi阅读 702评论 0 2
  • 1.Bitmap 具体的方法 Bitmap.recycle() 内存如果bitmap没有回收,会造成什么问题?首先...
    EdwardWinner阅读 733评论 2 0
  • Android开发者:你真的会用AsyncTask吗? 导读.1 在Android应用开发中,我们需要时刻注意保证...
    cxm11阅读 2,730评论 0 29
  • 不理解,我还能怎么样。互相的误会是生活吧。 故事是这样的,从我还没认识他起,就听说了很多关于他的故事,每一个故事都...
    鱼豆芽汤阅读 228评论 0 0