Liebes Delphi Forum,
beim Praxis-Test meiner Android App stolpere ich über ein recht hartnäckiges Problem, weshalb ich mich vertrauensvoll an Euch wende. Beim Versuch einer Lösung blicke ich auf stundenlange Sitzungen mit ChatGPT 4o zurück, aber das hat alles nichts gebracht. Auch im Forum bin ich nicht weiter gekommen. Die dort vorgeschlagenen Livecycle Events lösen das Problem nur zum Teil.
Meine App sammelt im wesentlichen Daten in einem TStringGrid und gibt diese nach Drücken der Ok-Taste über einen
TCP Kanal (
Indy) an einen zweiten Rechner weiter. Über einen Timer erfolgt alle 2 Sekunden ein Heartbeat über denselben Kanal, um festzustellen ob die Verbindung (noch) besteht.
Das Problem liegt beim Beenden der App. Wird sie normal beendet (Ende-Button), ist alles gut. Aber es gibt leider noch weitere Möglichkeiten, wie sich meine Anwender um das ordnungsgemäße Beenden drücken können: Die Tasten in der unteren Reihe (Taskmanager, Home und Zurück), von denen ich mittlerweile das Klicken von „Home“ oder „Zurück“ abfragen bzw. erkennen kann, nicht aber den „Taskmanager“ Button.
Wird der Taskmanager Button gedrückt, verschwindet die App in den Hintergrund. Dort arbeitet sie ordnungsgemäß weiter - ich kann das daran erkennen, dass das Gegengerät den Heartbeat weiterhin registriert.
Klickt man nun in der Liste der „Recent Apps“ meine App wieder an, sollte man eigentlich erwarten, dass die App da weitermacht, wo sie zuvor aufgehört hat. Das ist aber nicht der Fall. Sie startet komplett neu, mit der Konsequenz, dass alle Daten des Grids verschwunden sind...
Meine Lösung sieht aktuell so aus, dass ich nach jeder Benutzereingabe den Inhalt des TstringGrids in den temporären Speicher des Smartphones schreibe. Findet die App beim Neustart solche Daten vor, so werden diese in das TStringGrid eingelesen. Das funktioniert perfekt, ist aber m. E. nicht die optimale Lösung.
Vielleicht habt Ihr eine Idee, wie man das eleganter lösen kann?
Meine
IDE: RADStudio12
Das Test-Smartphone: Samsung A14 mit Android Version 14.
P.S. Ein Quellcode macht hier wenig Sinn, da das beschriebene Verhalten ja gleichermaßen bei jeder beliebigen App vorherrscht.