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才是在线程中执行的。

       

  • 相关阅读:
    linux下vim的安装及其设置细节
    vm虚拟机下ubuntu连接上ssr
    文件写入-结构体排序
    利用链表进行报数游戏
    链表——尾插法
    C#设计模式总结
    C#设计模式(20)——策略者模式(Stragety Pattern)
    Autofac在项目中应用的体会,一个接口多个实现的情况
    C#设计模式(1)——单例模式
    jquery.js与sea.js综合使用
  • 原文地址:https://www.cnblogs.com/clunyes/p/3008324.html
Copyright © 2011-2022 走看看