【发布时间】:2019-05-11 17:10:26
【问题描述】:
我正在使用基于 LocationManager 类的 GPS 定位功能的后台服务开发 android 应用程序。我的代码在大多数手机上都能成功运行,但对于诺基亚手机,尤其是诺基亚 Android 9.0,后台服务运行正常,但大约 20 分钟后,尽管后台服务继续运行,但 LocationListener 在不提供任何 GPS 位置的情况下停止。似乎 onLocationChanged() 方法突然停止而没有异常。
我看到诺基亚的其他功能也有类似的问题,但我没有找到任何解决方案。
LocationManager locationManager = (LocationManager)
this._activity.getSystemService(Context.LOCATION_SERVICE);
// Define a listener that responds to location updates
locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
JSONObject coords = new JSONObject();
try {
json.put("latitude",location.getLatitude());
json.put("longitude",location.getLongitude());
json.put("altitude",location.getAltitude());
json.put("bearing",location.getBearing());
json.put("speed",location.getSpeed());
json.put("provider",location.getProvider());
coords.put("coords",json);
Log.d(TAG,"onLocationChanged "+coords.toString());
} catch (JSONException e) {
Log.e(TAG,"onLocationChanged JSONException "+e.getMessage());
}
}
public void onStatusChanged(String provider, int status, Bundle extras){
Log.d(TAG,"onLocationChanged status changed : "+provider+ " status="+status);
}
public void onProviderEnabled(String provider) {
Log.d(TAG,"onLocationChanged provider enabled "+provider);
}
public void onProviderDisabled(String provider) {
Log.d(TAG,"onLocationChanged provider disabled "+provider);
}
};
如果能提供任何帮助以解决该问题或找到解决方法,我将不胜感激。谢谢。
【问题讨论】:
-
您还检查了哪些其他安卓版本?
-
例如:使用三星 Android 7.0、8.0、8.1 和诺基亚 8.1 我没有任何问题。奇怪的是,至少对于诺基亚手机 Android 9.0,20 分钟后会超时,不会再次调用 onLocationChanged() 方法
标签: java android service background locationmanager