2012-04-16 1 views
1

장치의 geoloc (위도/경도)을 사용하여 위치 개체를 만들고로드 한 후 고정 된 랜드 마크 거리를 표시하는 데이터 어댑터에 바인딩 된 ListView가 있습니다. 문제는 평균적으로 아래의 코드가로드되는 데 3-7 초가 걸리므로 더 긴 프로세스는 "requestLocationUpdates()"입니다.이 프로세스는 NETWORK_SERVICE가없고 GPS_SERVICE가 기본이되어 가끔씩로드하는 데 몇 분이 걸릴 수 있습니다. 활동 ListView blankActivityManager의 OnCreate()에서 locationManager.requestLocationUpdates()를 호출해야합니까?

OnCreate() 활동 메소드가 requestLocationUpdates() 호출에 가장 적합한 장소입니까?

locationManager = (위치 관리자) getSystemService (Context.LOCATION_SERVICE); locationListener = new GeoLocationListener();

Criteria criteria = new Criteria(); 
    criteria.setAccuracy(Criteria.ACCURACY_FINE); 
    criteria.setAltitudeRequired(false); 
    criteria.setBearingRequired(false); 
    criteria.setCostAllowed(false); 
    criteria.setSpeedRequired(false); 
    criteria.setPowerRequirement(Criteria.POWER_LOW); 

    String provider = locationManager.getBestProvider(criteria, true);   

    locationManager.requestLocationUpdates(provider, 
     0, //300000, // TODO: Default to Check Every 5 Minutes OR 
      0, //500, // TODO: Default to Check if device moves more than 500 meters 
      locationListener); 

답변

1

사용 getLastKnownLocation, 내가 어떤 문제가에서 onCreate 메소드에서 호출 reagrding 볼 수 없습니다 다음 requestLocationUpdates를 호출 빈 목록을 보여주는 방지하기 목록보기의 최신 알려진 위치를 표시하기 위해 첫째.

+1

당신은 .. 내가 도움중인이 문서에 달렸다 맞아 :. "당신에 대한 모든 가능한 위치 제공자를 걱정하지만, 바로 사용할 수있는 최고의 하나를 얻을 싶지 않을 수도 이렇게하려면, 우리는 지정 우리 예를 들어, 고도와 베어링, 허용 비용 등이 필요합니까? 이제 특정 공급자에 대해 가장 최근에 알려진 위치를 위치 관리자에게 요청할 수 있습니다. 마지막 위치, 업데이트가 오기를 기다리는 중. " http://marakana.com/forums/android/examples/42.html – CampbellGolf

2

here을 읽으십시오. 그들은 당신을 가장 잘 도와야합니다.

onResume()requestLocationUpdates()을 입력하고 onPause()removeUpdates(this);을 입력합니다. 이렇게하면 업데이트되지 않은 위치에서 앱이 업데이트 된 위치를 중지합니다. gps가 필요하다면 requestLocationUpdates를 onCreate()에 넣으십시오. 또한

는 GPS가 마지막 아는 위치 사용할 수 있습니다 해결 속도를 : 당신이 onLocationChanged(Location location)

0

의 위치를 ​​얻을 때까지

mLocationProvider = mLocationManager.getBestProvider(new Criteria(), false); 
    Location location = mLocationManager.getLastKnownLocation(mLocationProvider); 

은 또한 대신 목록의 스피너를 표시 할 수 있습니다 당신은 안 목록보기를 채우기 위해 위치 업데이트에 의존하십시오. .getLastKnownLocation()으로 전화하여 마지막으로 알려진 위치 정보를 얻은 다음 앱이 더 정확한 위치를 요청 중임을 나타내는 지표를 표시 할 수 있습니다.

읽기 A deep dive into location

+0

Mahdi는 당신을 펀치로 때렸지만, 둘 다 맞았고 코드 솔루션에 대한 그의 반응에 대해 언급했습니다. 도와 주셔서 감사합니다! – CampbellGolf