2013-12-11 3 views
2

나는 LocationManager를 사용하여 사용자의 위치를 ​​추적하고 GoogleMaps에 표시합니다. 다음 접근 방식을 사용하고 있으며 이와 관련하여 몇 가지 질문이 있습니다. 코드 네임 1에서 LocationManager를 사용하는 올바른 방법

내가 사용하고, 처음 사용자의 위치를 ​​얻으려면 :이 차단 호출 것을 이해 무엇

locationManager = LocationManager.getLocationManager(); 
location = locationManager.getCurrentLocation(); 

. 따라서이 메서드가 반환 될 때까지 무한 진행률 표시 줄을 보여줍니다.

일단 위치가 있으면 WebBrowser 구성 요소에서 내 서버에 호스팅 된 jsp 페이지를 호출하고 위도와 경도를이 페이지에 전달합니다. 이 페이지는 사용자의 위치를 ​​마커로하여 Google지도를 반환합니다.

웹 브라우저의 onLoad() 메서드를 재정 의하여 페이지로드시 이벤트를 가져옵니다. 페이지가로드 되 자마자 위치 업데이트를 얻으려는 청취자를 내 locationManager에 지정합니다. 수신기에서 업데이트를 수신하면 BrowserComponent ->execute() 방법을 사용하여 페이지에서 자바 스크립트를 실행합니다.

이 접근법은 매우 잘 작동합니다.

질문 :

내가 처음으로 사용자의 위치에 대한을 locationManager를 조회

, 내가 명시 적으로 리스너를 할당하고 있지 않다. 이 메소드는 내부적으로 어떻게 실행됩니까?

자체 리스너를 시작합니까?

그렇다면 onLoad() 메서드에서 수신기를 할당 할 때 초기 수신기가 제거 되나요?

내 locationManager에 리스너를 명시 적으로 지워야합니까?

또는 청취자를 지정할 때 이전에 시작된 청취자가 지정됩니까?

같은 일을하는 두 명의 청취자가 생길까요?

BR,

Sanket

답변

2

당신은 제대로 getCurrentLocation() 또는 getLastKnownLocation (에 호출 API를 사용하고는(). 위치 지정 개체를 반환합니다 내부적으로 리스너를 시작할 수 있지만 내부적으로 중지됩니다). setListener를 호출 할 때 더 이상 업데이트를받지 않으려면 수신기를 지워야합니다. (어느 쪽이든 2 명의 청취자로 끝나지 않을 것입니다.)

gps를 사용할 수 없거나 작동하지 않을 경우 getCurrentLocation()은 Android에서 덜 정확한 Location 객체를 반환 할 수 있습니다. 네트워크 공급자

+0

감사합니다. 나는 그것이 NetworkProvider를 기본값으로한다는 것을 알고 있습니다. 그러나 사용자가 GPS를 켜면 자동으로 GPS에서 값을 제공하기 시작합니까? – sanket

+1

앱에서 Listener 방식을 처음 사용하는 경우 getCurrentLocation은 마지막 수신기를 사용합니다. 위치 기타 위치는 네트워크에서 위치를 가져 오려고 시도합니다. – Chen

관련 문제