Android OnCreateLoader不是随机调用的
在我的IM应用程序中,有一个聊天窗口,每当发送或接收消息时,都会调用loader.onContentChanged。 它工作得非常好,但有时甚至在调用“loader.onContentChanged”之后也会随机调用,没有对onCreateLoader和onLoadFinished的调用。 这是非常随机的,但用户会有一种奇怪的行为,他们点击发送,消息就会消失。 日志表明调用了initLoader,但缺少onCreateLoader中的日志。Android OnCreateLoader不是随机调用的,android,android-loadermanager,android-loader,Android,Android Loadermanager,Android Loader,在我的IM应用程序中,有一个聊天窗口,每当发送或接收消息时,都会调用loader.onContentChanged。 它工作得非常好,但有时甚至在调用“loader.onContentChanged”之后也会随机调用,没有对onCreateLoader和onLoadFinished的调用。 这是非常随机的,但用户会有一种奇怪的行为,他们点击发送,消息就会消失。 日志表明调用了initLoader,但缺少onCreateLoader中的日志。 我正在使用recycler视图显示邮件列表,但该代码不
我正在使用recycler视图显示邮件列表,但该代码不是问题。我不知道原因,但这就是修复缺陷的方法: 旧代码:
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();
}
}
}
}
private void initLoader(){
LoaderManager.LoaderCallbacks回调=此;
LoaderManager lm=getSupportLoaderManager();
if(mLoader==null){
mLoader=lm.initLoader(LOADER\u ID,null,回调);
}否则{
mLoader.onContentChanged();
}
}`
新代码:
`私有void initLoader(){
LoaderManager.LoaderCallbacks回调=此;
LoaderManager lm=getSupportLoaderManager();
if(mLoader==null){
mLoader=lm.initLoader(LOADER\u ID,null,回调);
}否则{
if(mLoader.isStarted()){
mLoader.onContentChanged();
}否则{
试一试{
mLoader=lm.restartLoader(LOADER\u ID,null,回调);
}捕获(例外e){
mLoader=null;
initLoader();
}
}
}
}
我不知道原因,但这就是修复缺陷的方法:
旧代码:
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();
}
}
}
}
private void initLoader(){
LoaderManager.LoaderCallbacks回调=此;
LoaderManager lm=getSupportLoaderManager();
if(mLoader==null){
mLoader=lm.initLoader(LOADER\u ID,null,回调);
}否则{
mLoader.onContentChanged();
}
}`
新代码:
`私有void initLoader(){
LoaderManager.LoaderCallbacks回调=此;
LoaderManager lm=getSupportLoaderManager();
if(mLoader==null){
mLoader=lm.initLoader(LOADER\u ID,null,回调);
}否则{
if(mLoader.isStarted()){
mLoader.onContentChanged();
}否则{
试一试{
mLoader=lm.restartLoader(LOADER\u ID,null,回调);
}捕获(例外e){
mLoader=null;
initLoader();
}
}
}
}