android syncadapter 관련 질문 : 일정 주기로 sync가 이루어지지 않습니다. 특정 device의 문제일까요?

조회수 1353회

안녕하세요. 안드로이드 syncadapter로 1시간 간격으로 API를 통해 자료를 Fetch하는 앱을 개발하고 있습니다. 에뮬레이터에서는 정상적으로 동작하는데요. physical device(Galaxy S7)에서는 sync가 이루어지지 않습니다. 일단 에뮬레이터에서는 정상적으로 동작하기 때문에 코드 자체는 큰 문제가 없어보입니다. 문제는 이건데요. "지금 동기화"시키는 기능으로 테스트해보려니 제 폰에서는 지금 동기화 기능이 비활성화 되어 있더군요.

이미지

에뮬레이터에서는 지금 동기화가 정상적으로 동작합니다.

이미지

무엇이 문제일까요? 갤럭시 S7에서만 이런 문제가 발생하는 건가요? syncadapter와 관련해 부여한 권한은 다음과 같습니다.


    <uses-permission android:name="android.permission.INTERNET"/>

    <uses-permission
        android:name="android.permission.READ_SYNC_SETTINGS"/>
    <uses-permission
        android:name="android.permission.WRITE_SYNC_SETTINGS"/>
    <uses-permission
        android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 삼성 device 가지고 계신 분 중에서 테스트 가능하시면 아래 소스코드의 앱을 설치하시고 3~4시간 정도 테스트해보신 후 답글 부탁드립니다. 제가 만든 앱, 그리고 google에서 tutorial로 따라 만드는 앱에서 사용하는 component인 syncadapter가 유독 삼성 device에서 정상적으로 작동하지 않는 것을 발견했습니다. 저 뿐 아니라 stackoverflow나 reddit에서도 이와 관련하여 문의를 하는 분들을 찾을 수 있었습니다.

    https://stackoverflow.com/questions/44384867/android-syncadapter-doesnt-syncs-on-my-device-samsung-s6-edge-plus-nougatsyncs

    https://www.reddit.com/r/androiddev/comments/6lmk8x/is_syncadapter_broken_on_newest_samsung_devices/

    구체적인 증상을 알려드리자면 syncadapter를 이용해서 정해진 주기에 동기화를 실시하는 앱이 정상적으로 작동하지 않습니다. 약 한달 정도 혼자 테스트해본 결과 SYNC_INTERVAL과 SYNC_FLEXTIME을 어떻게 설정하더라도 하루에 딱 한번만(APP을 처음 시작하면 account를 생성하고 강제로 동기화하는데 이 시간을 즈음하여 하루에 한번만) 동기화하는 것을 발견했습니다. emulator에서 정상적으로 작동하며 제가 가지고 있는 모든 android device에서 설정한대로 잘 작동합니다만 유독 제 galaxy s7에서만 이런 문제가 발생합니다. galaxy s7의 전원 관리 소프트웨어가 syncadapter의 동작을 방해하는 것이 아닐까 추측만 할 뿐이지 어디에서도 이와 관련된 해답을 얻을 수 없었습니다.

    직접 테스트해보실 수 있도록 소스코드 주소를 남깁니다. google에서 tutorial 형식으로 android 개발 과정을 배울 수 있게 udacity를 통해 제공하고 있는 Developing Android Apps 강좌의 sunshine 앱 소스 코드입니다.

    https://github.com/udacity/Sunshine-Version-2

    suncadapter 관련 소스코드 주소는 다음과 같습니다.(여기에서는 세 시간에 한번씩 동기화하도록 되어 있으나 역시 삼성 device에서는 하루에 한번만 동기화됩니다.)

    https://github.com/udacity/Sunshine-Version-2/blob/sunshine_master/app/src/main/java/com/example/android/sunshine/app/sync/SunshineSyncAdapter.java

    저처럼 무식하게 24시간에 한번 동기화되는 걸 확인해달라는 건 아니구요. 로그 모니터링하시면서 SunShine앱이 설정된대로 세 시간에 한번씩 동기화되지 않는다면 답글 남겨주시기를 부탁드립니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)