내 앱이 requestLocationUpdates (GPS 및 네트워크 중 먼저 발생하는 시점부터)을 사용 중입니다.requestLocationUpdates가 서비스에 대해 작동하지 않습니다.
내 코드 :
LocationManager lm = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
myLocationListenerInstance);
timeout = new Timer();
timeout.schedule(myGetLastKnownLocationInstance, TIMEOUT);
myGetLastKnownLocationInstance이 getLastKnownLocation을 사용하고 있습니다.
내 문제 :
현재 실행중인 작업에서이 코드를 호출의 myLocationListenerInstance이 TIMEOUT 초 이내에 통지를 받고있다.
그러나 백그라운드 서비스에서 호출 할 때 시간이 초과되고 마지막으로 알려진 위치를 통해 출력됩니다. 최악의 경우 측정 된 위치를 조사 할 때 타임 스탬프가 TIMEOUT보다 작습니다!
TIMEOUT을 1 분으로 설정하더라도이 동작이 나타납니다.
제안 사항? 감사합니다
문제는 기본 UI 스레드에서만 위치 업데이트를 요청할 수 있다는 것입니다. 그리고 분명히, 내 서비스에서, 나는 도우미 스레드를 사용하고 있었다.이걸 알면, 난 여전히 붙어있어 .. – Mugen
@ 뮤 젠, 아니, 당신은 확실히 백그라운드 서비스에서 requestLocationUpdates를 호출 할 수 있습니다. 서비스 수명주기 및 스레드 처리에 대한 내용을 읽었을 것입니다. 내 생각 엔 서비스가 시작되었을 것입니다. 그런 다음 중지 ... 다시 위의 내 대답으로 돌아갑니다. – logray