【发布时间】:2016-01-13 15:36:24
【问题描述】:
我正在使用 AsyncTaskLoader 从 web api 获取数据,但由于某种原因,加载程序并不总是触发 onLoadFinished 回调。
这是我的片段中的片段,我如何使用加载器。我总是重新启动加载程序 restartLoader(...).forceload() 以更新结果。加载程序是根据用户交互触发的。
private void getData() {
Bundle bundle = new Bundle();
bundle.putParcelable("userInput", mUserInputData);
getLoaderManager().restartLoader(CARS_LOADER_ID, bundle, carsLoaderListener).forceLoad();
}
private LoaderManager.LoaderCallbacks<List<Car>> carsLoaderListener = new LoaderManager.LoaderCallbacks<List<Car>>()
{
@Override
public Loader<List<Car>> onCreateLoader(int id, Bundle args)
{;
return new CarsLoader(getActivity(), (UserInput)args.get("userInput"));
}
@Override
public void onLoadFinished(Loader<List<Car>> loader, List<Car> data)
{
// This is not allways get called
setData(data);
}
@Override
public void onLoaderReset(Loader<List<Car>> loader)
{
}
};
即使加载程序已经在运行,也可以像这样重新启动加载程序吗?这会导致装载机被卡住吗?有时加载程序被触发并正常工作,但它更新触发 onLoadFinished 回调。当加载器像这样卡住时,重新启动片段/关闭应用程序可以解决问题。
【问题讨论】:
标签: android loader asynctaskloader