Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   mit XE7 erstellte App stürzt ab (https://www.delphipraxis.net/184213-mit-xe7-erstellte-app-stuerzt-ab.html)

schand99 9. Mär 2015 15:01

mit XE7 erstellte App stürzt ab
 
Eine Frage an die Experten:

in einer App verwende ich JLocation zur Bestimmung der GPS-Position des Smartphones. Dies da die Ortungsfunktion des Betriebssystems selbst wesentlich weniger Strom verbraucht als die in Delphi verfügbare Positionsbestimmung.
Eine kleine Anleitung zur Verwendung der der Ortungsfunktionen des Betriebssystems habe ich hier gefunden: http://www.fmxexpress.com/directly-a...ey-on-android/

Leider stürzt die App aber immer wieder und aus für mich nicht erklärbaren Gründen genau in dem Ereignis ab, das die Java-Klasse auslöst
Delphi-Quellcode:
procedure TStartup.onLocationChanged(location: JLocation);
  Var
  WebStr, VRet : String;
begin
  Try
     GPSPosX:=location.getLongitude;
  except
     GPSPosX:=0;
  End;
  Try
     GPSPosY:=location.getLatitude;
  except
     GPSPosY:=0;
  End;
  if (GPSPosX<>0) and (GPSPosY<>0) then
  Begin
     GPSInfoLabel.Text:='GPS ok';
     GPSInfoLabel.Visible:=True;
  End;
end;
Hat jemand von Euch einen Tipp wie ich den Absturz in dieser Prozedur verhindern kann?

vielen Dank,
Andreas

Daniel 9. Mär 2015 15:04

AW: mit XE7 erstellte App stürzt ab
 
Prüf mal, ob das, was Du bekommst, auch zugewiesen (<> NIL) ist.
Und dann schaue, ob Du vielleicht aus einem Thread heraus aufgerufen wirst und Zugriffe auf die UI eventuell mit Synchronize() behandeln musst.
Und dann schaue, ob Dein Event vielleicht mehrfach "gleichzeitig" aufgerufen werden kann. Dann müsstest Du das z.B. über eine CriticalSection absichern.

Union 9. Mär 2015 15:42

AW: mit XE7 erstellte App stürzt ab
 
Und dann stelle auch sicher, dass Du die Sensorenfunktionen nur auf dem Gerät nutzt. Der Simulator unterstützt diese nämlich nicht.

Daniel 9. Mär 2015 15:50

AW: mit XE7 erstellte App stürzt ab
 
Und wirf doch mal einen Blick in die Geräte-Konsole. Android ist ja gerade bei Exceptions recht geschwätzig. Oft genug kommt dabei ein wertvoller Hinweis für die Fehlerursache heraus.

schand99 9. Mär 2015 17:44

AW: mit XE7 erstellte App stürzt ab
 
Danke für die vielen Tipps.
Die Überprüfung ob location.getLongitude und .getLatitude nicht leer sind scheint eine Verbesserung gebracht zu haben. Es sieht so aus als ob die App nicht mehr so häufig abstürzen würde. Und wenn es dann doch passiert, dann erscheint "app wurde beendet" nicht mehr, sondern sie wird kommentarlos geschlossen. Ich deute das als Anzeichen dass der Fehler schön langsam eingekreist wird.
Muss auf wärmere Tage warten und mich mit dem Entwickler-PC in eine Wiese setzen. Es ist ganz schön lästig immer am PC was zu tippen und dann mit dem Smartphone ins Freie zu laufen und auf ein GPS-Signal zu warten :?

Bernhard Geyer 9. Mär 2015 17:47

AW: mit XE7 erstellte App stürzt ab
 
Ich kenne jetzt den Wrapper nicht genau, aber da in Java auch ein String ein Object darstellt kann dieser auch null/nil sein.
Wenn der Wrapper das jetzt nicht richtig auf einen Leerstring mappt kannst du da schöne Fehler bekommen ...

mquadrat 10. Mär 2015 07:47

AW: mit XE7 erstellte App stürzt ab
 
Zitat:

Zitat von schand99 (Beitrag 1292813)
Dies da die Ortungsfunktion des Betriebssystems selbst wesentlich weniger Strom verbraucht als die in Delphi verfügbare Positionsbestimmung.

Ist das echt so? Ist die Delphi Sensor API nicht einfach ein Wrapper um die OS Funktionen? *wunder*

schand99 10. Mär 2015 10:51

AW: mit XE7 erstellte App stürzt ab
 
Zitat:

Zitat von mquadrat (Beitrag 1292880)
Zitat:

Zitat von schand99 (Beitrag 1292813)
Dies da die Ortungsfunktion des Betriebssystems selbst wesentlich weniger Strom verbraucht als die in Delphi verfügbare Positionsbestimmung.

Ist das echt so? Ist die Delphi Sensor API nicht einfach ein Wrapper um die OS Funktionen? *wunder*

Das ist echt so. Geht sogar so weit dass sich ein Xperia Z3 compact bei Einsatz der Delphi XE7 Sensor API spürbar erwärmt und man beinah zusehen kann wie die Akku-Prozentanzeige in die Knie geht.
Verwendet man die in Android integrierte Ortungsfunktion so bleibt das Smartphone kühl und der Stromverbrauch steigt nicht wesentlich an. Dafür stürzt die App aber leider immer wieder ab :(

himitsu 10. Mär 2015 13:04

AW: mit XE7 erstellte App stürzt ab
 
Vielleicht pollt der Delphi-Wrapper zu oft?


Bei meinem Lenovo-Tablet verbraucht deren eigene "Rotationserkennung" massig Strom, selbst wenn der Bildschirm aus ist. :wall:

arnof 10. Mär 2015 21:56

AW: mit XE7 erstellte App stürzt ab
 
bei Android und Delphi ist irgendwie alles mit Sensoren ein kleiner Taschenwärmer und Hilft, wenn der Akku mal schnell leer werden soll ....

Aber das ist bei vielen anderen Apps auch nicht anders :oops:

Von Apple mag man halten was man will, seit ich wieder zu iPhone gewechselt habe, habe ich keinen Taschenwärmer mehr .... Z.B. dort muss man nicht pollen bei Sensoren und Positionen, dort kommt ein Callback (Ereigniss). z.B. bei den Wrappern von iCL (TMS)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz