未随机调用OnCreateLoader

问题描述:

在我的IM应用程序中,有一个聊天窗口,其中loader.onContentChanged在发送或接收消息时被调用。 它工作得很好,但有时甚至在调用'loader.onContentChanged'后没有调用onCreateLoader和onLoadFinished。 这是非常随机的,但用户得到一个奇怪的行为,其中他们点击发送和消息消失。 日志表明initLoader被调用,但来自onCreateLoader的日志丢失。 我正在使用回收站视图来显示消息列表,但该代码不是问题。未随机调用OnCreateLoader

我不知道原因,但这是缺陷是怎么固定:

旧代码:

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(); 
      } 
     } 
    } 
}