2010-01-01 3 views
1

나는 10 분마다 주기적으로 내 GPS 위치를 샘플링하고 싶습니다. 나는이 작업을 수행하는 가장 좋은 방법은이 방법으로을 locationManager 클래스를 사용하는 것입니다 있으리라 믿고있어 : 다음 내 응용 프로그램에서 방송 수신기에서받을 수 지정된 의도를 방송 할 Android : 서비스를 실행하지 않고 정기적 인 GPS 위치 샘플링에 방송 수신기를 사용할 수 있습니까?

public void requestLocationUpdates (String provider, long minTime, float minDistance, PendingIntent intent) 

. 내 질문은, 만약 내가이 메서드를 호출하면, requestLocationUpdate()를 호출 한 프로세스가 멈 추면 브로드 캐스트가 멈추게 될 것인가 아니면이 등록이 활성 상태로 유지되어 위치 업데이트를 계속받을 수있을 것인가? 사용자가 다른 응용 프로그램으로 이동할 때 위치 업데이트를 유지하려면 서비스를 실행 상태로 두어야합니까? 감사!

답변

6

기본적으로 당신이 말한 것은 정확합니다. 알고있는 한.

LocationManager에 제공 했으므로 Activity이 사망해도 등록이 계속 유지되어야한다고 생각합니다. 살아있는 당신의 업무에 대한 의존성이 없습니다 — PendingIntent에는 프레임 워크가 필요로하는 모든 정보가 들어 있습니다. the docs에서

:

의 소유 응용 프로그램의 프로세스가 죽인 경우에도 PendingIntent 자체가

그것은 꽤 간단해야 부여 된 다른 과정에서 계속 사용할 것 어쨌든 이걸 테스트 해봐. 활동 또는 서비스에서 위치 업데이트를 시작한 다음 셸로 이동하여 앱을 종료하고 GPS 툴바 아이콘이 남아 있고 Intent이 예상대로 표시되는지 확인합니다.

Service을 실행중인 상태로 두는 것은 피해야합니다. PendingIntent은 들어오는 위치 Intent을 처리하도록 남겨두고 서비스를 시작할 수 있습니다. 처리해야하는 모든 작업을 수행 한 다음 자체적으로 중지하십시오 (Service.stopSelf()). 다음 IntentLocationManager에 의해 해고되면 다시 시작됩니다.

어떤 시점에서 위치 업데이트를받지 않도록 등록을 취소하십시오!

관련 문제