restartLoader(int id, Bundle args, LoaderCallbacks<D> callback)
は全く新しいローダーオブジェクトを作成しますか?それとも、内部状態をリセットして古いものを再利用するだけですか?`LoaderManager.restartLoader`は新しいオブジェクトを作成しますか?
ありがとうございました。あなたは同じID
たびに渡すと
restartLoader(int id, Bundle args, LoaderCallbacks<D> callback)
は全く新しいローダーオブジェクトを作成しますか?それとも、内部状態をリセットして古いものを再利用するだけですか?`LoaderManager.restartLoader`は新しいオブジェクトを作成しますか?
ありがとうございました。あなたは同じID
たびに渡すと
あなたは
restartLoader(int id, Bundle args, LoaderCallbacks<D> callback)
を呼び出すことでしょうREUSE同じローダーオブジェクト。しかし、新しいID
を渡すと、新しいLoader
オブジェクトが作成されます。この方法は、ドキュメントチェックthis quote from the documentationからのように動作します
は新しいを開始したり、このManagerの既存のローダを再起動し、それにコールバックを登録し、(活動/フラグメントが現在起動している場合)、それをロードを開始します。同じIDを持つローダーが以前に起動されている場合、新しいローダーがその作業を完了すると自動的に破棄されます。コールバックは、古いローダーが破棄される前に配信されます。
しかしID
は、このドキュメントガイド、check the Loader Summary Hereからとして重要なものであるので、あなたがこの上で深く掘る必要はありません。initLoader(いずれかを呼び出し、ローダからのデータのロードを開始するには
)またはrestartLoader()。システムは、同じ整数IDを持つローダがすでに存在するかどうかを自動的に判断し、新しいローダを作成するか、既存のローダを再利用するかを決定します。
だから、要するに、あなたが異なるID
を渡した場合、それは新しいローダーを作成しますが、あなたが同じID
を渡した場合、それは同じローダーを使用します。しかし、Cursors
が再使用されないことを忘れないでください。