2014-07-10 2 views
0
try 
{ 
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    Criteria criteria = new Criteria(); 
    provider = locationManager.getBestProvider(criteria, false); 
    Location location = locationManager.getLastKnownLocation(provider); 
    // Initialize the location fields 
    if (location != null) 
    { 
     onLocationChanged(location); 
    } 
} 
catch(Exception e) 
{} 

안녕 얘들 아,왜 유휴 시간이 길어지면 Android가 위치를 잃어 버리는 이유는 무엇입니까?

내가 getLastKnownLocation를 사용하여 내 위의 코드에서 GP를 값을 얻고있다().

문제는 긴 유휴 시간 이후에 드물게 (또는) 가끔 (또는) null을 반환하는 getLastKnownLocation()입니다. 공급자 또는 네트워크 문제가 없습니다. 필요한 모든 사용 권한은 매니페스트에 선언되어 있습니다.

null 값을 올바른 값으로 대체하는이 문제를 해결할 수있는 해결책을 찾을 수 없습니다.

모바일을 다시 시작할 때 getLastKnownLocation()이 올바른 값을 반환합니다. 그러나 매번 해결책으로 받아 들여질 수는 없습니다.

모바일이 위치를 잃어 버리는 이유와 위치를 복구하는 이유는 알 수 없습니다.

전적으로 현재 위치에 따라 달라지는 응용 프로그램을 개발 중입니다.

이 문제를 피하는 방법이나이 대안을 피할 수있는 다른 방법이 있습니까?

답변

0

문서 도구가 제공자가 오프라인 일 때 null이 반환 될 수 있다고 말합니다. 어쩌면 귀하의 코드가 장애인 공급자를 선택했을 것입니까? 정확한 위치가 필요한 경우 GPS를 사용하여 자신의 위치 수신기를 시작하십시오 (가능한 경우 GPS를 켜기 위해 사용자를 설정 화면으로 이동할 수 있음). 또한 lastKnownLocation이 시작 지점으로 사용하기에는 너무 오래되지 않았는지 확인할 수 있습니다 (물론 null이 아닌 경우).

관련 문제