【问题标题】:OnCreateLoader not called randomlyOnCreateLoader 不是随机调用的
【发布时间】:2016-08-01 14:34:11
【问题描述】:

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

【问题讨论】:

    标签: android android-loadermanager android-loader


    【解决方案1】:

    我不知道原因,但这就是修复缺陷的方法:

    旧代码:

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

    【讨论】:

      猜你喜欢
      • 2014-02-10
      • 2011-12-10
      • 2012-10-04
      • 1970-01-01
      • 2023-03-28
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多