如何将此asyncTask转换为AsyncTaskLoader?

时间:2019-02-28 22:37:49

标签: android android-asynctask asynctaskloader

由于movieListFetcher.listType是一个枚举,如何将AsyncTask的代码转换为AsyncTaskLoader?

http://localhost:8888

1 个答案:

答案 0 :(得分:0)

使用AsyncTaskLoader的常规步骤:

o步骤1::创建扩展AsyncTaskLoader<D>的自定义Loader类; D:是使用loadInBackground()方法实现的后台任务返回的对象列表;然后覆盖以下方法:

  • loadInBackground() >>在后台运行以加载繁重的工作..类似于doInBackground()的{​​{1}}
  • AsyncTask >>在加载程序创建后且在onStartLoading()之前运行;可以用于使用loadInBackground()返回以前加载的结果,或使用deliverResult()
  • 再次运行后台任务来加载新结果

o步骤2:在需要后台流程的Activity中实施forceLoad()。这需要实现3种方法:

  • LoaderCallbacks<D> >>在主线程中运行以创建加载程序实例
  • onCreateLoader() >>在主线程中运行以提交后台结果并更新UI ..与onLoadFinished()的{​​{1}}

  • onPostExecute() >>重置加载程序数据

o第3步:在活动中需要的时候使用LoaderManager来启动加载器:

  • 注意:(如果您使用的是V4支持库,请确保导入正确的Loader&LoaderManager)

要在您的示例中应用它:

第1步:

AsyncTask

第2步和第3步:

onLoaderReset()

请注意,现在不推荐使用装载程序,并以LiveDataViewModels

代替

希望这可以满足您的需求,您可以查看此tutorial以获取更多信息