1

こんにちは、LoaderCallbacksを実装するクラスがあるため、実装されていないメソッドがオーバーライドされます。onCreateLoader()、onLoaderFinshed()およびonLoaderReset();

アクティビティ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()メソッドは呼び出されません。

データが変更された場合:

ローダーによって監視されているデータが変更された場合、ローダーはそれ自体を再クエリします。ただし、onLoadFinished()このローダーがメソッドによって LoaderManager に提供されていない場合、 は呼び出されませんonCreateLoader

要約すると:

あなた、または他のプロセスが、ローダーによって監視しているデータを変更することを想像してください。

この LoaderLoaderManager に提供されている場合は、onCreateLoaderthen onLoadFinished()が呼び出されます。

このローダーがによって LoaderManager に提供されていないonCreateLoader場合 、呼び出されonLoadFinished()ませ

于 2012-06-14T16:03:27.313 に答える