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)
를 호출 그 것이다 재사용 같은 로더 객체입니다. 그러나 새로운 ID
을 전달하면 새 Loader
개체가 생성됩니다. 이 방법은 문서 검사 this quote from the documentation에서 같이 작동합니다
새로운를 시작하거나이 관리자에서 기존 로더를 다시 시작, 거기에 콜백을 등록하고 (활동/단편 현재 시작되는 경우)로드를 시작. 동일한 ID를 가진 로더가 이전에 시작된 경우 새 로더가 작업을 완료하면 자동으로 제거됩니다. 콜백은 이전 로더가 삭제되기 전에 전달됩니다.
ID
이 문서 가이드에서 같은 중요한 문제이기 때문에
하지만, 이것에 깊이 파고 check the Loader Summary Here가 없습니다 :
는 로더에서 데이터를로드를 시작하려면 통화 중 initLoader() 또는 restartLoader(). 시스템은 동일한 정수 ID를 가진 로더가 이미 존재하는지 여부를 자동으로 결정하고 새 로더를 만들거나 기존 로더를 다시 사용합니다.
그래서 한마디로 당신은 다른 ID
가 새로운 로더를 만듭니다 통과하지만 만약 당신이 같은 ID
를 전달하면 동일한 로더를 사용합니다. 그러나 Cursors
은 다시 사용하지 않는다는 것을 기억하십시오.