2011-11-27 2 views
4

5 분마다 위치 관리자로부터 업데이트를받는 백그라운드 서비스가 있습니다. onChange가 호출 될 때, 내 액티비티의 함수를 호출하여 사용자 위치를 보유하고있는 GeoPoint를 업데이트합니다. 이것은 잘 작동하고 내가 원하는 것을합니다. 이 작업을 위해 방송 수신기와 같은 것을 사용하는 것이 더 나은지 확실하지 않습니다. 방송 수신기를 사용해 보았지만 작동하지 않습니다. 현재이 작업을 수행하는 방식이 잘못 되었습니까? 나는 다음과 같은 한백그라운드 서비스에서 위치 정보를 얻는 것이 맞습니까?

public static double getLat() { 
    return lat; 
} 

public static double getLng() { 
    return lng; 
} 

public void onLocationChanged(Location loc) {   
    lat = (double) (loc.getLatitude()); 
    lng = (double) (loc.getLongitude()); 
    mapview.locationHasChanged(); 
} 

그리고 내 경계 활동 :

내 위치 서비스에서 다음과 같은 방법을

public static void locationHasChanged() { 

    double myLat = LocationService.getLat(); 
    double myLng = LocationService.getLng(); 

    LocGeo = new GeoPoint(
      (int) (myLat * 1E6), 
      (int) (myLng * 1E6)); 
} 

답변

2

당신이하고있는 것은 괜찮 내 경험 표준에서 위치 업데이트를 다루는 방법. 5 분마다 업데이트를 요청하도록 LocationManager를 구성하는 것은 매우 쉽습니다. 내 유일한 제안은 당신이 정말로 필요한 것을 할 수있는 서비스가 필요한지 생각하는 것입니다. 활동이 화면에서 실행되는 동안 위치 업데이트 만 필요합니까? 그렇다면 백그라운드 서비스를 사용하지 마십시오. 활동이 종료 된 후에도 업데이트가 필요할 경우 서비스를 사용하고 OnGoing 알림을 작성하여 사용자가 백그라운드에서 서비스가 실행 중임을 알 수 있도록하십시오.

브로드 캐스트 수신기는 전화가 켜진 후와 같이 전화상의 특정 이벤트 후에 백그라운드 서비스를 시작하거나 중지해야하는 경우에 더 많이 사용됩니다.

+0

여러 활동에서 서비스의 위치를 ​​가져올 계획이므로이 경우에는 별도의 서비스가되고 활동 자체가 필요하지 않습니다. 도와 주셔서 감사합니다! – jgelderloos

관련 문제