Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   iOS FMX & Application Events? (https://www.delphipraxis.net/184444-fmx-application-events.html)

Mavarik 27. Mär 2015 09:55

FMX & Application Events?
 
Hallo Zusammen!

Ich habe bisher die Application Events sagen wir mal Ignoriert.

Aber es gibt ja die möglich auf Background usw. zu reagieren.
Genauso den Status der App zu speichern, damit der User wieder an der gleichen stelle ist, wenn er sie wieder startet...

Welche "Dinge" macht Ihr in diesen Events?

Mavarik

Daniel 27. Mär 2015 10:01

AW: FMX & Application Events?
 
Zitat:

Zitat von Mavarik (Beitrag 1295033)
Genauso den Status der App zu speichern, damit der User wieder an der gleichen stelle ist, wenn er sie wieder startet.

Dafür würde ich mittlerweile Form.SaveState nutzen. Beim Schliessen des Formulars wird das Event "OnSaveState" ausgelöst. Die benötigten Objekte (ins. SaveState.Stream) stellt das Form selbst zu Verfügung. Anbei ein Trivial-Beispiel, im Ernstfall würde man vermutlich JSON schreiben.

Delphi-Quellcode:
procedure Tfrm_Main.FormSaveState(Sender: TObject);
var
  W: TBinaryWriter;
begin
  SaveState.Stream.Clear;

  W := TBinaryWriter.Create(SaveState.Stream);
  try
    W.Write(Edit1.Text);
    W.Write(Edit2.Text);
  finally
    W.Free;
  end;
end;
und etwa im OnCreate oder dgl. kann man das Zeugs wieder lesen:

Delphi-Quellcode:
procedure Tfrm_Main.FormCreate(Sender: TObject);
var
  R: TBinaryReader;
begin
  SaveState.StoragePath := 'C:\Temp\'; //optional!

  if SaveState.Stream.Size > 0 then
  begin
    R := TBinaryReader.Create(SaveState.Stream);
    try
      Edit1.Text := R.ReadString;
      Edit2.Text := R.ReadString;
    finally
      R.Free;
    end;
  end;
end;

Mavarik 27. Mär 2015 10:10

AW: FMX & Application Events?
 
Zitat:

Zitat von Daniel (Beitrag 1295036)
Dafür würde ich mittlerweile Form.SaveState nutzen. Beim Schliessen des Formulars wird das Event "OnSaveState" ausgelöst. Die benötigten Objekte (ins. SaveState.Stream) stellt das Form selbst zu Verfügung. Anbei ein Trivial-Beispiel, im Ernstfall würde man vermutlich JSON schreiben.

Plus einen Status ob das Form normal beendet wurde?
Oder wird der SaveState nur aufgerufen wenn die App das beendet...

Was ist mit den Background Geschichten?

Hast Du Dir da eine System.Message geschrieben wo alle relevanten "jungs" drauf hören?
- Thread beenden Timer stoppen usw.?
- Und wenn wie wieder an der richtige Stelle starten?

Kommt natürlich alles auf die App an...

Mavarik

arnof 27. Mär 2015 10:23

AW: FMX & Application Events?
 
ich meine bei den emba blog mal was genau zu diesen Thema gelesen zu haben, auch der code , suche einfach mal dort zu diesem Ereignis, das Daniel hier geschrieben hat....

himitsu 25. Aug 2025 08:09

AW: FMX & Application Events?
 
Zitat:

Zitat von Mavarik (Beitrag 1295040)
Oder wird der SaveState nur aufgerufen wenn die App das beendet...

Auch wenn die App in den Hintergrund geht (Home- oder Apps-Button im Android)

Gefühlt geht es bei mir fast immer, auch wenn nicht immer,
vor allem nicht, wenn die App abstürzt oder "hart" abgeschossen wird .... aber für Letzteres muß man ja erst raus (wenn Terminate innerhalb des Android, nicht via Debugger), womit dort bereits gespeichert werden sollte.

Jedenfalls kann man scheinbar OnSaveState auch nutzen, um woanders zu speichern, anstatt im SaveState.
(Achtung, wenn in Cloud und das zu lange dauert, dann kann die "Hintergrund"-App bereits pausiert/beendet sein, bevor es fertig wird)

Was zum Testen: https://www.delphipraxis.net/181299-...ml#post1551141

bernau 25. Aug 2025 12:49

AW: FMX & Application Events?
 
Der Thread ist 10 Jahre alt.

himitsu 25. Aug 2025 12:54

AW: FMX & Application Events?
 
Und leider immernoch aktuell. :cry:

Wollte nur mal schnell, so RAD-mäßig, eine kleine App basteln,
aber durfte mich das ganze Wochenende dann auch mit diesem Scheiß rumärgern (und zwei anderen zugehörigen Dingen).
Wo es hier auch nur etwa 3-4 Threads gibt, welche das Thema betreffen und die alle nicht abschließend geklärt waren/sind.

Mavarik 25. Aug 2025 15:31

AW: FMX & Application Events?
 
Zitat:

Zitat von bernau (Beitrag 1551154)
Der Thread ist 10 Jahre alt.

LOL... Jau!


Zitat:

Zitat von himitsu (Beitrag 1551155)
Und leider immernoch aktuell. :cry:


Und ich benutze die Funktion bis heute nicht.

Mavarik :coder:

himitsu 25. Aug 2025 16:43

AW: FMX & Application Events?
 
Bin grade bissl am Probieren, was wo am besten/einfachsten gespeichert werden kann.

Per se ist diese Funktion nicht schlimm,
aber den Binärstream finde ich schon bissl ungünstig.

Felder/Variablen hinzufügen/ändern/löschen und schon knallt es.
Da müsste man dann wieder anfangen wie beim DFM-Reader, also auch noch den Namen und Typ mit abspeichern.
Oder immer nur hinzufügen und nie löschen (also auch immer Dummy-Felder für Altes/Geändertes/Gelöschtes weiterhin speichern/lesen)

Und auf Windows/OSX/Linux (nicht Android/iOS) muß man auch aufpassen keine FormNamen doppelt zu haben. (bei eigenen und Fremd-DelphiApps)

Ob man da jetzt auch z.B. einfach einen JSON-Stream nehmen könnte, oder ob es unbedingt dieses binäre sein muß .... hmmmmmmmmmmmm?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:04 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