未随机调用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();
}
}
}
}