zoukankan      html  css  js  c++  java
  • AsyncTask

      平时用AsyncTask比较多,今天看到了一篇比较细致的讲解,也很有启发。

      当我们调用execute(Params... params)方法后,execute方法会调用onPreExecute()方法,然后由ThreadPoolExecutor实例sExecutor 执行一个FutureTask任务,这个过程中doInBackground(Params... params)将被调用,如果被开发者覆写的doInBackground(Params... params)方法中调用了publishProgress(Progress... values)方法,则通过InternalHandler实例sHandler发送一条MESSAGE_POST_PROGRESS消息,更新进 度,sHandler处理消息时onProgressUpdate(Progress... values)方法将被调用;如果遇到异常,则发送一条MESSAGE_POST_CANCEL的消息,取消任务,sHandler处理消息时 onCancelled()方法将被调用;如果执行成功,则发送一条MESSAGE_POST_RESULT的消息,显示结果,sHandler处理消息 时onPostExecute(Result result)方法被调用。

    经过上面的介绍,相信朋友们都已经认识到AsyncTask的本质了,它对Thread+Handler的良好封装,减少了开发者处理问题的复杂度,提高了开发效率,希望朋友们能多多体会一下。

        我用的比较少的方法就是publishProgress(Progress... values),它会去调用onProgressUpdate(Progress... values)。

       这边很细致的描绘excute之后的流程,比我的理解稍微多一点吧,嘿嘿。其实就是pre-doInBack-post。在doInBack的时候可以画进度。也只有doInBack才是在线程中执行的。

       

  • 相关阅读:
    C# 各版本的新特性
    EntityFramework增删改查
    web.config配置文件中的configSource属性
    IOC
    权限系统设计实现
    代码依赖和解除具体依赖的技术
    ajax利用html5新特性带进度条上传文件
    React Native 从入门到原理
    npm中本地安装命令行类型的模块是不注册Path的
    需求分析-验证控件的功能需求列表
  • 原文地址:https://www.cnblogs.com/clunyes/p/3008324.html
Copyright © 2011-2022 走看看