OnCreateLoader不是随机调用的

时间:2016-08-01 14:34:12

标签: android android-loadermanager android-loader

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

1 个答案:

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