为什么Android在长时间闲置后会失去其位置?

时间:2014-07-10 12:50:08

标签: java android gps geolocation

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)
{}

嗨,大家好,

我使用getLastKnownLocation()从上面的代码中获取Gp值。

问题是getLastKnownLocation()在很长的空闲时间之后很少(或)有时(或)返回null。没有提供商或网络问题。所有必需的权限都在清单中声明。

无法找到克服此问题的解决方案(即)用正确的值替换空值。

重新启动移动设备时,getLastKnownLocation()返回正确的值。但每次都无法接受这种解决方案。

不知道为什么移动设备正在丢失其位置以及何时恢复其位置。

我正在开发一个完全取决于当前位置的应用程序。

如何克服此问题或任何其他替代方法可以避免此问题?

1 个答案:

答案 0 :(得分:0)

文档说,当提供程序处于脱机状态时,可以返回null。也许您的代码选择禁用提供商?如果您需要更精确的位置,请使用GPS启动您自己的位置监听器(如果可用 - 如果没有,您可以将用户移动到设置屏幕以打开GPS)。您还可以验证lastKnownLocation是否不太旧(当然,如果它不为空)将其用作起点。