2017-12-13 2 views
0

Cloud Firestore 데이터베이스에서 사용자의 데이터를 검색하여 단편에 표시하려고합니다. Firestore에서 쿼리가 비동기 적으로 작동하기 때문에 Firestore DB에서 모든 데이터를 가져 오기 전에 UI가로드됩니다. 내 조각의 OnViewCreated 메서드는 쿼리가 충분히 빠르지 않은 경우 null 데이터를로드합니다.Firestore가 데이터 가져 오기 중 로딩 표시기를 표시합니다.

이 문제를 방지하는 가장 좋은 방법은 무엇입니까? 쿼리가 처리되는 동안로드 표시기를 표시해야합니까? 그렇다면 어떻게 완료되었는지 어떻게 알 수 있습니까?

또한 User 클래스의 데이터를 검색하고 다른 인스턴스간에 동일한 인스턴스를 공유하는 가장 좋은 방법은 무엇입니까?

답변

1

Cloud Firestore 데이터베이스에서 문서를 가져올 때이 문제를 해결하려면 addOnCompleteListener을 사용해야합니다. 즉, onComplete() 메서드가 트리거되고 비동기 동작이 있기 때문에 다른 메서드를 호출하거나 해당 메서드 내에 UI 요소를 직접 표시해야합니다. 그렇지 않으면 항상 null이됩니다.

콜백을 추가하여 해당 메서드 외부에서도 액세스 할 수있는 또 다른 방법이 있습니다. 이를 위해 저는 비동기적인 세계로 들어가서이 대답 post에서 대답을 봅니다. 이것은 onDataChange() 메서드 밖에서 데이터를 가져 오는 것입니다. 그러나 거의 동일합니다.

최상의 사용자 경험을 위해로드 표시기를 추가하여 사용자가 빈 화면을 볼 수 없도록 할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 왜'addOnSuccessListener' 대신'addOnCompleteListener'를 사용해야합니까? 또한 당신이 코멘트 abouot 내 마지막 질문을 포함시킬 수 있다면 좋을 것입니다. –

+0

작업이 완료되면'addOnCompleteListener'가 호출되기 때문에 UI 요소를 표시해야합니다. 당신이 활동을하는 것과 같은 방식으로, 당신은 파편들과 관련이 있습니다. –

+0

감사합니다. 실제로 링크 된 게시물이 트릭을했습니다. –

관련 문제