在我的IM应用程序中有一个聊天窗口,无论何时发送或接收消息,都会调用loader.onContentChanged。 它工作得非常好,但有时甚至在调用'loader.onContentChanged'后也没有调用onCreateLoader和onLoadFinished。 这是非常随机的,但用户会得到一种奇怪的行为,他们点击发送消息就会消失。 日志表明已调用initLoader,但缺少来自onCreateLoader的日志。 我正在使用回收站视图来显示消息列表,但该代码不是问题。
答案 0 :(得分: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();
}
}
}
}