Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   App bleibt beim Re-Start lange eingefroren (https://www.delphipraxis.net/205117-app-bleibt-beim-re-start-lange-eingefroren.html)

braunbaer 3. Aug 2020 12:48

App bleibt beim Re-Start lange eingefroren
 
Hallo Zusammen!
Kennt jemand das Problem, dass seit Delphi Sydney eine App, wenn sie länger im Hintergrund war, bis zu 30 Sekunden braucht bis sie wieder reagiert?
Der Screen bleibt einfach eingefroren. Danach läuft es normal weiter.
So wie ich das beobachtet habe wird das "BecameActive" viel zu spät getriggert.
Das Problem habe ich bei iOS. Android verhält sich normal.

Ich werde jetzt noch eine einfache neue Test-App bauen. Bin gespannt, ob das da auch so ist...

Schon mal Danke für jedes Feedback!

Gebhard

Rollo62 3. Aug 2020 12:57

AW: App bleibt beim Re-Start lange eingefroren
 
Nein, eigentlich nicht.
Vielleicht machst Du etwas beim Aktivwerden (WillBecomeActive), um den Status wiederherzustellen.

Das verschiebe ich immer nachdem BecameActive gefeuert wurde, und die App sichtbar ist.

braunbaer 3. Aug 2020 13:33

AW: App bleibt beim Re-Start lange eingefroren
 
Die Statuseinstellungen der App werden im "BecameActive" gemacht.
hat bis Dato auch einwandfrei funktioniert.
Ich analysiere weiter...

Rollo62 3. Aug 2020 13:55

AW: App bleibt beim Re-Start lange eingefroren
 
Versuch doch mal das einfach 300ms später auszuführen,
dann ist die App gestartet, und es sieht nicht so lange blockierend aus.

braunbaer 6. Aug 2020 06:06

AW: App bleibt beim Re-Start lange eingefroren
 
Zitat:

Zitat von Rollo62 (Beitrag 1471057)
Versuch doch mal das einfach 300ms später auszuführen,
dann ist die App gestartet, und es sieht nicht so lange blockierend aus.

Hallo Rollo62,
danke für deinen Input.

Ich habe inzwischen den Punkt gefunden, wo alles einfriert.
Das mit TTasks und Threads habe ich schon im Griff, allerdings habe ich die Datenbankzugirffe auf die SQLite im Hauptthread.
Es läuft auch alles sauber und rund, da die notwendigen Datenbankzugriffe in wenigen Millisekunden erledigt sind.

zum Problem:
wenn die App (Zeiterfasssung) etwas Länger im Hintergrund ist, braucht der erste Zugriff auf die SQLite-DB extrem lange (10 - 30 Sekunden).
Danach läufts wieder.
Die SQLite-Datei liegt im LibraryPath. Eventuell ist das das Problem. Ich werde diese in den Documentspath verschieben...

Bin für weitere Tipps immer dankbar.

Rollo62 6. Aug 2020 06:24

AW: App bleibt beim Re-Start lange eingefroren
 
Zitat:

Zitat von braunbaer (Beitrag 1471254)
.. im Hintergrund ist, braucht der erste Zugriff auf die SQLite-DB extrem lange (10 - 30 Sekunden).

Erster Zugriff heisst was genau, das erste Öffnen oder das erste SELECT ?
Vielleicht ist es aufschlussreich mal mit TStopWatch die Zeiten in den Before/After Routinen echt zu messen, um zu sehen wo genau es hängt.

braunbaer 6. Aug 2020 07:04

AW: App bleibt beim Re-Start lange eingefroren
 
Zitat:

Zitat von Rollo62 (Beitrag 1471255)
Erster Zugriff heisst was genau, das erste Öffnen oder das erste SELECT ?

Es ist das erste Öffnen der DB mit dem ersten Select.
ich prüfe das noch, ob öffnen oder Select...

Da dies die letzten 5 oder mehr Jahre immer funktioniert hat und auch auf Android perfekt funktioniert und auch mit Rio perfekt funktioniert hat, denke ich eher, dass es mit Sydney irgend eine Änderung gab.
Leider konnte ich nichts in diese Richtung finden.

Das verschieben der DB in den DocumentsPath hat nichts geändert (wäre auch komisch)

Rollo62 6. Aug 2020 10:32

AW: App bleibt beim Re-Start lange eingefroren
 
Es hat sich ab Android-10 mal wieder Einiges geändert, auch am Filezugriff,
ich suche selber noch nach Ursachen und Lösungen.
Das könnte aber auch das Sqlite-File betreffen

https://developer.android.com/traini...rage/use-cases

Vielleicht hat es was damit zu tun.

KodeZwerg 6. Aug 2020 10:40

AW: App bleibt beim Re-Start lange eingefroren
 
Nicht Cross-Plattform, bei/für Windows setze ich oftmals PE-Flags um das File im Speicher zu halten. Ein Grund könnte ein entladen im Hintergrund sein.
Delphi-Quellcode:
{$SetPEFlags ...FLAGS....}

Hier sind die verschiedenen Flags beschrieben.
IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP und IMAGE_FILE_NET_RUN_FROM_SWAP sind die Flaggen die ich meine.

braunbaer 6. Aug 2020 11:15

AW: App bleibt beim Re-Start lange eingefroren
 
Zitat:

Zitat von KodeZwerg (Beitrag 1471275)
Nicht Cross-Plattform, bei/für Windows setze ich oftmals PE-Flags um das File im Speicher zu halten. Ein Grund könnte ein entladen im Hintergrund sein.
Delphi-Quellcode:
{$SetPEFlags ...FLAGS....}

Hier sind die verschiedenen Flags beschrieben.
IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP und IMAGE_FILE_NET_RUN_FROM_SWAP sind die Flaggen die ich meine.

das Problem ist nur bei iOS...
Windows und Android laufen problemlos.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 Uhr.
Seite 1 von 2  1 2      

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