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

   

posted @ 2013-04-08 16:45  clunyes  阅读(150)  评论(0编辑  收藏  举报