0

我每次使用loader都有這個問題。如果我開始我的AsyncTaskLoader然後旋轉屏幕(不重要一次或多次)onLoaderFinished()不會被調用。 loadInBackground()完成其工作,但onLoaderFinished()未被調用。它看起來像回調錯過,但在活動onCreate()我:LoaderCallbacks旋轉後錯過

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."); 
+0

您的活動_is_處理程序,或有一個處理程序對象?你確定它沒有執行,或者你只是看不到結果? – 2013-03-04 15:41:21

+0

@ClassStacker請看看更新的代碼 – rocknow 2013-03-04 15:55:26

+0

關於你的編輯,這意味着你沒有看到日誌消息? – 2013-03-04 15:58:10

回答

1

不要在if語句包裝你initLoader電話。事實上,我甚至都不知道如何在您調用initLoader之前期望loader不爲null的情況下如何調用initLoader。

+0

如果我這樣做,我的裝載機將立即開始。如果我不想要這個,該怎麼辦? – rocknow 2013-03-04 16:02:07

+0

好的,所以你說你在你的問題中沒有包含其他地方的initLoader。你用setRetainInstance(true)保留你的片段嗎? – 2013-03-04 16:04:07

+0

這裏我沒有使用片段 – rocknow 2013-03-04 16:04:30