2016-08-01 1 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(); 
      } 
     } 
    } 
} 
관련 문제