0

每次使用加载器时都会遇到这个问题。如果我启动我的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.");
4

1 回答 1

1

不要将 initLoader 调用包装在 if 语句中。实际上,如果您在调用 initLoader 之前就期望加载器不为空,我什至不确定如何调用 initLoader。

于 2013-03-04T15:54:43.563 回答