ローダーを使用するたびにこの問題が発生します。起動AsyncTaskLoader
してから画面を回転させても(1回でも数回でも構いません)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.");