由于movieListFetcher.listType是一个枚举,如何将AsyncTask的代码转换为AsyncTaskLoader?
http://localhost:8888
答案 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来启动加载器:
要在您的示例中应用它:
第1步:
AsyncTask
第2步和第3步:
onLoaderReset()
请注意,现在不推荐使用装载程序,并以LiveData和ViewModels
代替希望这可以满足您的需求,您可以查看此tutorial以获取更多信息