1

美好的一天,我有一个实现 LoaderCallbacks 的类,因此覆盖了未实现的方法。onCreateLoader()、onLoaderFinshed() 和 onLoaderReset();

在 Activity onCreate() 中,我准备了一个加载器:

getLoaderManager().initLoader(0, null, this);

在 onCreateLoader() 中,我在这里返回了一个自定义加载器类,它扩展了 christain 的 SimpleLoader 类。

现在只是想知道,如果我在我的类中 onCreateLoader() 方法之外的某个地方执行此操作:

CursorLoader loader = new cursorLoader(
this,android.provider.ContactsContract.Contacts.CONTENT_URI, null,null,null,null);
loader.loadInBackground();
//cursor = loader.loadInBackground();

LoaderCallback 是否持有对它的引用并调用 onLoadFinished() 或者这完全是一个不同的实现。这到底是什么意思?谢谢你。

4

1 回答 1

0

创建新的 CursorLoader 与 LoaderManager 无关。

那么在创建新的 CursorLoader 时该onLoadFinished()方法将不会被调用。

如果数据发生变化怎么办:

如果Loader监控的数据发生变化,Loader会重新查询自己。但是onLoadFinished()如果这个 Loader 没有被该方法提供给 LoaderManager,则不会调用onCreateLoader

总结一下:

想象一下,您或其他进程正在修改您正在通过加载程序监控的数据。

如果这个 Loader已经被提供给 LoaderManager,onCreateLoader那么 onLoadFinished()将被调用。

如果此 Loader尚未提供给 LoaderManager,onCreateLoader不会 onLoadFinished()调用。

于 2012-06-14T16:03:27.313 回答