카우치베이스 모바일

카우치베이스 라이트에서 복제 상태 확인하기

안드레스 니에토 포라스(https://www.flickr.com/photos/anieto2k) 제공

카우치베이스 라이트 는 백그라운드 스레드를 사용하여 복제(동기화)를 실행합니다. 복제 시작 및 중지는 동기적으로 이루어지지 않습니다. 이로 인해 복제 상태를 감지하는 데 실수가 발생할 수 있습니다.

그리고 복제 클래스 에는 플랫폼에 따라 실행 중 속성 또는 다음과 같은 편리한 루틴 isRunning(). 이것은 복제 상태를 확인하는 가벼운 방법입니다.

하지만 이를 사용하면 예기치 않은 결과가 발생할 수 있습니다. 예를 들어 저는 최근에 연속 복제를 사용하는 유틸리티를 작성했습니다. 이 유틸리티에는 시작 및 중지 토글 버튼이 있습니다. 이 유틸리티는 isRunning 를 클릭하여 버튼 상태를 업데이트합니다. 이것은 나쁜 생각인 것으로 밝혀졌습니다. 변경 사항이 백그라운드에서 발생한다는 점을 고려하면 당연한 일이지만 간과하기 쉽습니다.

대신 선호하는 접근 방식은 변경 수신기를 사용합니다. 다음은 예시입니다.

두 개의 클래스가 있습니다. 데이터베이스 헬퍼 클래스는 단순화를 위해 몇 가지 표준 연산을 래핑합니다. 콜백 패턴을 사용하는 인터페이스를 추가했습니다. 클라이언트 클래스가 이를 구현해야 합니다. 헬퍼 클래스는 클라이언트에 아무 것도 전달하기 전에 Couchbase Lite 변경 알림을 소화합니다. 이렇게 하면 우려 사항을 잘 분리할 수 있습니다.

아래 코드 목록은 개요입니다. 필수적인 부분만 보여줍니다. 먼저 헬퍼 클래스를 살펴보겠습니다.

DBHelper는 다음과 같이 복제.변경 리스너 인터페이스입니다. 이것은 Couchbase Lite에서 정의한 인터페이스입니다. In 시작 복제 이 리스너를 리플리케이션에 추가합니다. 재정의할 수 있는 메서드가 하나 있습니다, 변경됨. . 변경 이벤트 전달된 값은 여러 가지 값을 가질 수 있습니다. 이 예에서는 먼저 오류를 확인하고 오류가 발생하면 사용자에게 알립니다. 그렇지 않으면 이것이 복제 상태 전환 이벤트인지 확인합니다. 대상 상태는 다음 중 하나일 수 있습니다. 초기, 러닝, IDLE, 오프라인, 중지또는 중지됨.

이 경우에는 복제가 종료되는지 여부만 알고 싶기 때문에 반환값을 단순화했습니다. 클라이언트가 둘 이상의 리스너를 등록할 수 있도록 허용하므로 마지막 코드 비트는 모든 콜백을 반복하여 호출합니다.

클라이언트 클래스는 훨씬 더 간단합니다. 이 클래스는 헬퍼 클래스에서 필요한 인터페이스를 구현합니다. 인스턴스를 생성하는 동안 리스너를 등록하기만 하면 됩니다. onChange UI에서 필요한 모든 작업을 수행합니다.

이 코드는 제가 만든 도구에서 가져온 것입니다. 도구 자체에 대한 자세한 내용은 이 게시물소스 코드는 GitHub에서 찾을 수 있습니다. 여기.

포스트 스크립트

더 많은 리소스를 확인하세요. 개발자 포털 트위터에서 팔로우하세요 카우치베이스 개발.

질문에 대한 답변을 게시할 수 있습니다. 포럼. 그리고 다음에도 적극적으로 참여합니다. 스택 오버플로.

트위터로 연락주세요 호드그릴리

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 호드 그릴리, 개발자 옹호자, 카우치베이스

호드 그레이리는 실리콘밸리에 거주하는 카우치베이스의 개발자 옹호자입니다. 그는 소프트웨어 엔지니어 및 엔지니어링 관리자로서 20년 이상의 경력을 보유하고 있습니다. 그는 전산 물리학 및 화학, 컴퓨터 및 네트워크 보안, 금융, 모바일 등 다양한 소프트웨어 분야에서 일해 왔습니다. 2016년 카우치베이스에 합류하기 전에는 삼성에서 모바일 개발자 관계를 이끌었습니다. 컬럼비아 대학교에서 화학 물리학 박사 학위를 받았습니다.

댓글 하나

  1. [...]는 DBService 헬퍼 클래스에서 제공됩니다. 여기에서 복제 상태 감지에 대해 조금 썼습니다. 이 앱에서는 동기화 버튼 [...]을 유지하기 위해 복제가 실행 중인지 여부만 알면 됩니다.

  2. [...] 다른 리스너를 사용하면 복제 상태에 따라 바쁘게 대기 중인 스피너(무기한 진행률 표시줄)를 표시할 수 있습니다. 복제 상태 모니터링에 대한 자세한 내용은 여기에서 확인할 수 있습니다. [...]

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.