Skip to content
wangdan edited this page Oct 12, 2014 · 5 revisions

Aisen框架异步线程,修改自android源码AsyncTask。所有耗时操作都使用WorkTask,ABaseFragment有内部线程ABaseTask,ARefreshFragment有分页线程PagingTask。详细信息请分别查看ABaseFragmentARefreshFragment

方法解析

  • onPrepare()
  • 异步方法前执行,一般显示一个ProgressDialog
  • workInBackground(Params... params) throws TaskException
  • 异步方法,执行在线程中
  • 抛出TaskException,包含网络异常、WebService服务返回异常或者其他任何异常
  • onSuccess(Result result)
  • 异步线程没有抛出异常,返回Result后调用
  • Result可以为null
  • 如果在Fragment中,记得判断getActivity()是否为null
  • onFailure(TaskException exception)
  • 处理异步方法抛出的异常
  • 一般将错误信息显示在视图上,或者Toast反馈
  • onFinished()
  • 线程执行结束方法,一般dismiss掉一个ProgressDialog
  • 不管onSuccess或者onFailure,这个方法都会执行

对比

异步线程最常用于调用WebService接口,以及将返回的数据反馈到UI上,我常见其他同事使用Handler+Thread,或者volley等框架。个人非常憎恶Handler+Thread,一堆的重复代码到处copy。其他框架倾向于面向点将各方法暴露在Activity或者Fragment中,例如一个方法readData(),一个方法parseData,一个方法bindData各自自个玩,流程虽然统一业务不具备连贯性。使用WorkTask,将每一个业务流程封装在一个对象中,完全解耦。乳沟你已经熟悉了ABaseTask,PagingTask等内部类线程,你将更加体会它的优势。

Clone this wiki locally