addOnFailureListener가 오프라인 모드에서 작동하지 않음 및 네트워크 문제
Nov 14 2020
addOnFailureListner는 add () 데이터에 대해 작동하지 않지만 addOnFailureListner는 get ()에 대해 작동합니다.
이것은 작동하지 않습니다
WorkPlaceRef.add(DATA).addOnCompleteListener(new OnCompleteListener<DocumentReference>() {
@Override
public void onComplete(@NonNull Task<DocumentReference> task) {
//Successfully created - This one triggers when I turn on wifi again.
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Error - This addonFailureListner is not working when there are no network.
}
});
이것은 작동합니다
WorkPlaceRef.get().addOnCompleteListener(new OnCompleteListener<DocumentReference>() {
@Override
public void onComplete(@NonNull Task<DocumentReference> task) {
//Successfully received - This one triggers when I turn on wifi again.
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Error - this addonFialureListner triggers when there is no network.
}
});
답변
1 DougStevenson Nov 14 2020 at 16:16
오프라인 상태에서 데이터 쓰기를 시도하는 것은 실패가 아닙니다. Firestore SDK는 먼저 로컬 오프라인 캐시에 데이터 를 쓰고, 결국 앱이 다시 온라인 상태가되면 해당 쓰기를 서버와 동기화합니다. 성공 리스너는 그럴 때마다 호출됩니다.
쓰기 실패는 보안 규칙 위반 또는 문서화 된 데이터베이스 제한 초과와 같은 연결 부족으로 인해 재 시도 할 수없는 문제가있는 경우에만 발생 합니다.
일부 문서 데이터가 아직 서버와 동기화되지 않았 는지 알고 싶다면 해당 메타 데이터 를 확인하여 쓰기가 보류 중인지 알 수 있습니다 .
1 NadeemShaikh Nov 14 2020 at 16:19
get
호출이 일어날 수 없기 때문에에 반면 기능은 작동 add
이의이 왜에 표시되지 않도록 완료하기되어야합니다 OnFailure
. 아래도 읽어보세요.
public abstract Task<TResult> addOnFailureListener (OnFailureListener listener)
Task가 실패 할 경우 호출되는 리스너를 추가합니다.
리스너는 메인 애플리케이션 스레드에서 호출됩니다. 작업이 이미 실패한 경우 리스너 호출이 즉시 예약됩니다. 리스너가 여러 개 추가되면 추가 된 순서대로 호출됩니다.
취소 된 작업은 실패한 작업이 아닙니다. 이 리스너는 태스크가 취소되면 트리거되지 않습니다. 자세한 내용은이 링크 를 참조하십시오 .