내 시나리오는 서비스가 주기적으로 일부 정보 (예 : 사용자 위치)를 얻고 내 서버에보고하고 위치가 일부 X 위치와 일치하면 푸시 알림을 수신하도록하려는 것입니다.백그라운드 서비스에서 GoogleAPIClient 사용
응용 프로그램이 실행 중인지 여부에 관계없이 주기적으로 위치 정보를 검색하는 가장 좋은 방법이 무엇인지에 대한 조언을 얻으 려합니다. 다음은 내가 생각한 옵션과 각각의 배경 정보입니다.
는 표준 안드로이드 서비스
내 첫번째 생각을 만들기 위치 업데이트를 얻을 것이다 위치가 수신되면,이 서버로 전송하는 GoogleAPIClient을 초기화한다 STICKY 서비스를 만드는 것이 었습니다. 이 접근법에서 가지고있는 문제는 주기적으로 위치 정보를 얻어야한다는 것입니다. 따라서 위치 검색을 실행하지 않고 있어도 서비스가 계속 실행됩니다. 또한 서비스 내에서 위치를 자주 폴링하는 가장 좋은 방법은 무엇일까요? IntentService
나는 알람 관리자 웨이크 업 갖는 (GoogleAPIClient를 통해) 위치 업데이트를 시작하는 IntentService을 시작했다 생각 두 번째 옵션으로 알람을 만들기
. 위치를 얻은 후 서버로 보내고 위치 업데이트를 닫습니다. 이렇게하면 위치 업데이트를 주기적으로 시작/중지하는 문제가 해결됩니다. 그러나 IntentService 내에서 GoogleAPIClient에 연결하는 데 많은 시간이 걸리지 않았으며 가장 효율적이라고 생각하지 않습니다. GcmTaskService
이것은 알람 관리기의 많은 장점을 가지고 있으며, 그것은 단지 서비스를 깰로 전화가이처럼 보였다 있도록 유지 관리 모드에있을 때마다 졸다 모드의 측면에서 더 효율적인 것으로 보인다 만들기
좋은 해결책. 그러나 IntentionService와 동일한 문제가있어 GoogleAPIClient에 연결하여 잠시 기다리지 않고 위치를 가져옵니다.
나는이 토끼 구멍에서 너무 멀리 떨어져 있을지도 모릅니다. 그래서 내가 놓친 부분이있을 수 있습니다. 따라서 어떤 조언을 주시면 감사하겠습니다.
그게 내가 생각한거야. JobScheduler 내에서 GoogleAPI 클라이언트에 어떻게 연결 했습니까? blockingConnect를 타임 아웃이나 다른 방법으로 사용 하시겠습니까? – pkramaric
비 차단 [connect()] (https://developers.google.com/android/reference/com/google/android/gms/common/api/GoogleApiClient.html#connect()) 메소드를 사용하고 연결 결과에 따라 작업을 처리하십시오 (onConnected, onConnectionFailed 메소드). – kws