每次使用加载器时都会遇到这个问题。如果我启动我的AsyncTaskLoader
然后旋转屏幕(没关系一次或几次)onLoaderFinished()
不会被调用。loadInBackground()
完成它的工作但onLoaderFinished()
没有被调用。似乎错过了回调,但在活动中onCreate()
我有:
LoaderManager lm = getSupportLoaderManager();
if (lm.getLoader(LOADER_FLIGHTS) != null) {
lm.initLoader(LOADER_FLIGHTS, null, mFlightsLoaderCallbacks);
}
回调由活动或字段实现无关紧要。就我而言,我使用字段:
LoaderCallbacks<SearchResult> mFlightsLoaderCallbacks = new LoaderCallbacks<SearchResult>() {
有时它工作得很好,但在某些设备上我又遇到了这个麻烦。
我在 Android 错误跟踪器中进行了搜索,但没有发现任何有用的信息。
这是我的错误吗?我该如何纠正?
编辑:
private Handler mHandler = new Handler();
@Override
public void onLoadFinished(Loader<SearchResult> loader, SearchResult res) {
mHandler.post(new Runnable() {
@Override
public void run() {
dismissProgress(R.string.dlg_wait_flights);
}
});
mResult = res;
Helper.Log.d(TAG, "Loader.onLoadFinished.");