2016-08-01 109 views
1

在我的IM應用程序中,有一個聊天窗口,其中loader.onContentChanged在發送或接收消息時被調用。 它工作得很好,但有時甚至在調用'loader.onContentChanged'後沒有調用onCreateLoader和onLoadFinished。 這是非常隨機的,但用戶得到一個奇怪的行爲,其中他們點擊發送和消息消失。 日誌表明initLoader被調用,但來自onCreateLoader的日誌丟失。 我正在使用回收站視圖來顯示消息列表,但該代碼不是問題。未隨機調用OnCreateLoader

回答

0

我不知道原因,但這是缺陷是怎麼固定:

舊代碼:

private void initLoader(){ 
    LoaderManager.LoaderCallbacks<Cursor> callbacks = this; 
    LoaderManager lm = getSupportLoaderManager(); 
    if (mLoader == null) { 
     mLoader = lm.initLoader(LOADER_ID, null, callbacks); 
    } else { 
     mLoader.onContentChanged(); 
    } 
}` 

New code: 
`private void initLoader() { 
    LoaderManager.LoaderCallbacks<Cursor> callbacks = this; 
    LoaderManager lm = getSupportLoaderManager(); 
    if (mLoader == null) { 
     mLoader = lm.initLoader(LOADER_ID, null, callbacks); 
    } else { 
     if(mLoader.isStarted()) { 
      mLoader.onContentChanged(); 
     }else { 
      try { 
       mLoader = lm.restartLoader(LOADER_ID, null, callbacks); 
      }catch(Exception e){ 
       mLoader = null; 
       initLoader(); 
      } 
     } 
    } 
}