应用程序在RequestLocationUpdates之后崩溃

时间:2014-11-13 01:58:22

标签: android delphi

我知道已经有一些关于RequestLocationUpdates崩溃的问题,但我还没有找到针对我的具体问题的答案。

使用LocationManagerService我开始使用minTime = 1000minDistance = 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;

0 个答案:

没有答案