AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi versehentliches Beenden einer Android App
Thema durchsuchen
Ansicht
Themen-Optionen

versehentliches Beenden einer Android App

Ein Thema von pollo · begonnen am 26. Feb 2024 · letzter Beitrag vom 3. Mai 2024
Antwort Antwort
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
942 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: versehentliches Beenden einer Android App

  Alt 27. Feb 2024, 09:53
Mein Quellcode war ja nur ein Beispiel. Du kannst ja selbst entscheiden, was du bei dem Back-Klick machen möchtest.
Bei mir ist es eben so, dass ich schaue, ob die virtuelle Tastatur offen ist und diese dann schließe.
Falls dies nicht der Fall ist, springe ich auf andere Dialog in der App.
  Mit Zitat antworten Zitat
Benutzerbild von pollo
pollo

Registriert seit: 28. Dez 2012
Ort: Werneck
6 Beiträge
 
FreePascal / Lazarus
 
#2

AW: versehentliches Beenden einer Android App

  Alt 28. Feb 2024, 08:28
So Ihr Lieben,

das klappt also wunderbar!

Ich teste ab sofort mit einem Android 11 Smartphone. Danke an Rollo62 für den Tipp!

Und nochmals danke an Philipp für den entscheidenden Hinweis!
Gerd
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.553 Beiträge
 
Delphi 12 Athens
 
#3

AW: versehentliches Beenden einer Android App

  Alt 28. Feb 2024, 08:34
Funktioniert OnCloseQuery im Android nicht?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
942 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: versehentliches Beenden einer Android App

  Alt 28. Feb 2024, 14:20
Es gibt in Android- und iOS-App ja kein normales Close, was ich also Nutzer in der App aufrufen kann. Ich kann nur die App von außen schließen und dies kann man auch über die App nicht verhindern. OnCloseQuery ist ja dazu da, dass Beenden im Zweifelfall zu verhindern, um noch eine Frage zu stellen oder was auch immer. Verhindern geht unter Android nicht, wenn der Nutzer die App wegschiebt, schiebt er sie weg.

Wenn die App beim Klick auf den Back-Button auch crasht, macht sie an der Stelle etwas anderes, was so jetzt in geordnete Bahnen umgelenkt wurde.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.553 Beiträge
 
Delphi 12 Athens
 
#5

AW: versehentliches Beenden einer Android App

  Alt 28. Feb 2024, 15:44
Ja, Wegschieben ala "wie im Windows quasi per Taskmanager schließen/abschießen",

doch hier ging es um das Schließen über den "Zurück"-Knopf und da steuert "eigentlich" Delphi die Aktion,
drum hätte ich gedacht, dass es hier dann auch über's OnClose/OnCloseQuery läuft.

Bzw. in der VCL wird OnCloseQuery auch nur beim Close aufgerufen, aber nicht wenn man direkt Free/Release oder Application.Terminate auslöst.



Ich kenn aber auch so schon mehrere Programme, wo das "Zurück" nicht immer funktioniert (auch nicht Delphi).
Dort wird bei zurück normal erstmal die aktuelle Aktion beendet (Menüfenster geschlossen) und wenn bereits im Hauptfenster, dann kommt eine "Programm beenden?"-Frage,
aber oftmals macht der Knopf einfach garnichts. (Handy neu starten und danach vielleicht wieder)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Feb 2024 um 15:49 Uhr)
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
942 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: versehentliches Beenden einer Android App

  Alt 28. Feb 2024, 21:48
Bei FMX wird unter Windows bei einem Terminate von außen auch die OnCloseQuery aufgerufen, aber trotzdem wird die App dann beendet, sprich eine Rückfrage sieht man an der Stelle nur noch, kann sie aber nicht mehr beantworten.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.058 Beiträge
 
Delphi 12 Athens
 
#7

AW: versehentliches Beenden einer Android App

  Alt 29. Feb 2024, 11:50
Du musst die Livecycle Events deiner App berücksichtigen!
Delphi-Quellcode:
procedure TAppForm.FormCreate(Sender: TObject);
Begin
    //Intercept LifeCycleEvents
    var aFMXApplicationEventService:IFMXApplicationEventService
    if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, IInterface(aFMXApplicationEventService) ) then
      aFMXApplicationEventService.SetApplicationEventHandler(HandleAppEvent)
    else
      Tlog.d('Application Event Service is not supported.');
end;
Und
Delphi-Quellcode:
function TAppForm.HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean;
begin
  case AAppEvent of
    TApplicationEvent.FinishedLaunching: TLog.d('FinishedLaunching'); // Only Android, Probably IOS too (App has been started by the user)
    TApplicationEvent.BecameActive: TLog.d('BecameActive'); // Both (App is in USE)
    TApplicationEvent.WillBecomeInactive: TLog.d('WillBecomeInactive'); // Only Android, Probably IOS too (Focus is about to switch to other app)
    TApplicationEvent.EnteredBackground: // Both (App is beeing executed while in the Background)
    Begin
      TLog.d('EnteredBackground');
      TAppViewModel.getinstance.EnterBackground;
    End;
    TApplicationEvent.WillBecomeForeground: // Both (App is focused)
    Begin
      TLog.d('WillBecomeForeground') ;
      TAppViewModel.getinstance.EnterForeground;
    End;
    TApplicationEvent.WillTerminate:TLog.d('WillTerminate') ; // Both (User terminted the APP)
    TApplicationEvent.LowMemory: TLog.d('LowMemory'); // Both (Please use less memory, please! But how?)
    TApplicationEvent.TimeChange:TLog.d('TimeChange') ; // IOS
    TApplicationEvent.OpenURL:TLog.d('OpenURL') ; // IOS
  end;
  Result := True;
end;
Dadurch kannst du alle Eingaben sichern befor die App beendet wird und die Eingaben wieder laden und anzeigen wenn die App fortgesetzt wird und nichts geht verloren
Andreas
Nobody goes there anymore. It's too crowded!

Geändert von QuickAndDirty (29. Feb 2024 um 11:53 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz