【发布时间】:2013-03-04 15:35:39
【问题描述】:
我每次使用加载器时都会遇到这个问题。如果我启动我的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.");
【问题讨论】:
-
你的Activity是处理程序,还是有处理程序对象?你确定它没有被执行,还是你只是看不到结果?
-
@ClassStacker 请查看更新后的代码
-
关于您的编辑,这意味着您没有看到日志消息?
标签: android android-loadermanager android-support-library android-loader android-configchanges