참고: 대부분의 백그라운드 처리 사용 사례에 권장되는 솔루션인 WorkManager를 사용하는 것이 좋습니다. 가장 적합한 솔루션을 알아보려면 백그라운드 처리 가이드를 참조하세요.
Android 기기와 웹 서버 간에 데이터를 동기화하면 사용자에게 훨씬 더 유용하고 매력적인 애플리케이션을 만들 수 있습니다. 예를 들어 웹 서버로 데이터를 전송하면 유용한 백업이 되며 서버에서 데이터를 전송하면 기기가 오프라인 상태일 때도 사용자가 데이터를 사용할 수 있습니다. 경우에 따라 사용자는 웹 인터페이스에서 데이터를 입력하고 수정한 다음 데이터를 기기에서 사용하는 것이 더 쉬울 수 있습니다. 또는 시간 경과에 따라 데이터를 수집한 다음 중앙 저장소 영역에 업로드하기를 원하는 경우도 있습니다.
앱에서 데이터 전송을 실행하기 위해 자체 시스템을 설계할 수도 있지만, Android의 동기화 어댑터 프레임워크 사용을 고려해야 합니다. 이 프레임워크는 데이터 전송을 관리 및 자동화하고 여러 앱 간의 동기화 작업을 조정하는 데 도움이 됩니다. 이 프레임워크를 사용하면 직접 설계하는 데이터 전송 체계에서는 사용할 수 없는 몇 가지 기능을 활용할 수 있습니다.
- 플러그인 아키텍처
- 호출 가능한 구성요소 형태로 시스템에 데이터 전송 코드를 추가할 수 있습니다.
- 자동 실행
- 데이터 변경, 경과 시간 또는 하루 중 특정 시간을 비롯한 다양한 기준에 따라 데이터 전송을 자동화할 수 있습니다. 또한 시스템은 실행할 수 없는 전송을 큐에 추가하고 가능한 경우 전송을 실행합니다.
- 네트워크 확인 자동화
- 기기가 네트워크에 연결되어 있을 때만 시스템에서 데이터 전송을 실행합니다.
- 배터리 성능 향상
- 앱의 데이터 전송 작업을 모두 한곳에 중앙화하여 모두 동시에 실행되도록 할 수 있습니다. 데이터 전송은 다른 앱의 데이터 전송과 함께 예약됩니다. 이러한 요인으로 인해 시스템에서 네트워크를 켜야 하는 횟수가 줄어들어 배터리 사용량이 줄어듭니다.
- 계정 관리 및 인증
- 앱에 사용자 인증 정보나 서버 로그인이 필요한 경우 선택적으로 계정 관리 및 인증을 데이터 전송에 통합할 수 있습니다.
이 과정에서는 동기화 어댑터와 이를 래핑하는 바인드된 Service
를 만드는 방법, 동기화 어댑터를 프레임워크에 플러그인하는 데 도움이 되는 다른 구성요소를 제공하는 방법, 동기화 어댑터를 다양한 방식으로 실행하는 방법을 보여줍니다.
참고: 동기화 어댑터는 비동기식으로 실행되므로 데이터를 규칙적이고 효율적으로 전송하지만 즉각적으로 전송하지는 않을 것을 염두에 두고 사용해야 합니다. 실시간 데이터 전송이 필요한 경우 AsyncTask
또는 IntentService
에서 실행해야 합니다.
과정
- 스터브 인증자 만들기
- 동기화 어댑터 프레임워크가 앱의 일부일 것으로 예상되는 계정 처리 구성요소를 추가하는 방법을 알아봅니다. 이 과정에서는 편의를 위해 스텁 인증 구성요소를 만드는 방법을 보여줍니다.
- 스터브 콘텐츠 제공업체 만들기
- 동기화 어댑터 프레임워크가 앱의 일부일 것으로 예상되는 콘텐츠 제공업체 구성요소를 추가하는 방법을 알아봅니다. 이 과정에서는 앱이 콘텐츠 제공업체를 사용하지 않는다고 가정하므로 스텁 구성요소를 추가하는 방법을 보여줍니다. 앱에 이미 콘텐츠 제공업체가 있다면 이 과정을 건너뛰어도 됩니다.
- 동기화 어댑터 만들기
- 동기화 어댑터 프레임워크가 자동으로 실행할 수 있는 구성요소에서 데이터 전송 코드를 캡슐화하는 방법을 알아보세요.
- 동기화 어댑터 실행
- 동기화 어댑터 프레임워크를 사용하여 데이터 전송을 트리거하고 예약하는 방법을 알아봅니다.