2017-10-09 5 views

答えて

1

あなたは

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が再使用されないことを忘れないでください。

関連する問題