android – 重新启动CursorLoader并不反映数据库删除

我正在使用CursorLoader来跟踪数据库中的数据.可以使用删除此数据库

Context.deleteDatabase(databaseName);

删除后,我重新启动加载程序

getLoaderManager().restartLoader(LOADER_ID, null, this);

现在当我得到回调

onLoadFinished(Loader<Cursor> loader, Cursor data)

它并不反映数据已经消失.我得到的数据和以前一样.

我在做概念错误的事情吗?

最佳答案 LoaderManager试图变得聪明并重新使用加载器.这是一个解决不同加载程序错误的解决方法,但我认为它适用于此:

    Loader<Object> loader = getLoaderManager().getLoader(0);
    if (loader != null && ! loader.isReset()) {
        getLoaderManager().restartLoader(0, null, mItemsListener);
    } else {
        getLoaderManager().initLoader(0, null, mItemsListener);
    }
点赞