我知道已经有一些关于RequestLocationUpdates崩溃的问题,但我还没有找到针对我的具体问题的答案。
使用LocationManagerService
我开始使用minTime = 1000
和minDistance = 1
进行位置更新请求,以测量高尔夫球命中/距离。通常,这很好用。但有时应用程序崩溃(根本没有错误,应用程序只是终止并重新启动)。我猜是系统终止了我的应用程序,因为它占用了太多的性能。我真的不确定,但这是我唯一可以想象的。
所以,如果我是对的,我可以改变什么以避免这个问题?如果我可能不对,还有什么可能导致这个问题?
提前谢谢!
祝你好运
安迪
下面的源代码(Delphi)的重要部分:
procedure TFormStartMeasure.ButtonMeasureTap(Sender: TObject;
const Point: TPointF);
var
LocationManagerService: JObject;
begin
try
if not Assigned(FLocationManager) then begin
LocationManagerService := SharedActivityContext.getSystemService(TJContext.JavaClass.LOCATION_SERVICE);
FLocationManager := TJLocationManager.Wrap((LocationManagerService as ILocalObject).GetObjectID);
if not Assigned(locationListener) then
locationListener := TLocationListener.Create(self);
end;
FLocationManager.requestLocationUpdates(TJLocationManager.JavaClass.GPS_PROVIDER, 1000, 1, locationListener, TJLooper.JavaClass.getMainLooper);
FLocationManager.getLastKnownLocation(TJLocationManager.JavaClass.GPS_PROVIDER);
except
try
if Assigned(locationListener) then
FLocationManager.removeUpdates(locationListener);
TimerRelease.Enabled := true;
except
end;
end;
end;
procedure TFormStartMeasure.onLocationChanged(location: JLocation);
var
locAccuracy, locLatitude, locLongitude: Double;
begin
if MeasurementAborted = true then
exit;
try
locAccuracy := location.getAccuracy;
locLatitude := location.getLatitude;
locLongitude := location.getLongitude;
except
end;
end;