![]() |
AW: ActivityIndicator nach dem Programmstart
Zitat:
|
AW: ActivityIndicator nach dem Programmstart
Du weißt um was es geht? iOS und so?
|
AW: ActivityIndicator nach dem Programmstart
Zitat:
|
AW: ActivityIndicator nach dem Programmstart
Zitat:
|
AW: ActivityIndicator nach dem Programmstart
Ich kenne IOS nicht, aber ich vermute, das es sich auch um ein Betriebssystem handelt, welches noch auf den normalen SISD-CPUs in klassischer Von-Neumann-Architektur aufbaut. Danach wäre es eine serielle Abfolge von Befehlen, die Du umzusetzen gedenkst. Obwohl das bescheuert ist und beim FMX im Detail vermutlich anders ausschaut, ist es doch so, das Du einfach deine Befehle zum kompletten Laden ausführen musst, bevor das Haupformular sichtbar wird.
So wie ich die API durchschaue, ist sie wirklich der VCL nachempfunden, sodaß mein Code vermutlich so oder ähnlich doch funktionieren könnte. |
AW: ActivityIndicator nach dem Programmstart
Okay, mal ein Beispiel: Das hier will ich zum Laufen bekommen
Delphi-Quellcode:
Was passiert?
procedure TForm1.FormShow(Sender: TObject); // Gleiches Ergebnis im OnFormCreate
begin ZeigeActivityIndicator('test'); Sleep(10000); VersteckeActivityIndicator end; Der Splash-Screen erscheint solange, bis die 10 Sekunden rum sind.Was soll es tun? Das Formular anzeigen und ein ActivityIndicator 10 Sekunden lang kreiseln lassenEin Thread würd das Problem lösen, aber 1000 andere aufwerfen. |
AW: ActivityIndicator nach dem Programmstart
Zitat:
Aber wenn Du eben partout allergisch auf Threads (und damit auf den Ansatz professioneller Software) bist, dann musst Du eben anders ans Ziel kommen: Anstatt also einen Helfer vor die Tür zu schicken, der vor dieser Auf und Ab geht und ein Schild 'I am the Activity Indicator' vor sich her dreht, während im Hinterstübchen die Arbeit gemacht wird, mach die Arbeit halt auf der Straße und renne alle paar Arbeitsschritte nach vorne, dreh kurz am Schild und mach dann weiter, wenn Du verstehst, was ich meine.
Delphi-Quellcode:
Mal sehen, was Du jetzt antwortest.
Procedure VielArbeit();
Begin ZeigDenActivityIndicator(); Schritt1; StubsDenActivityIndicator(); Schritt2; StubsDenActivityIndicator(); ... VerbergeDenActivityIndicator(); End; |
AW: ActivityIndicator nach dem Programmstart
Zitat:
Ein Thread wäre in meinem Fall völlig overdressed, weil bevor die Handlung abgeschlossen ist, nichts anderes passieren darf. Außerdem würde es z.B. Probleme mit dem Datenbankzugriff geben (sqlite->ein Zugriff zur selben Zeit) |
AW: ActivityIndicator nach dem Programmstart
@Furtbichler Nein das geht nicht unter iOS... Abgesehen davon ist der SplashScreen im Systemkern und kann/muss nicht manuell aufgerufen werden.
So und jetzt noch mal: Du hast ca. 1-2 Sekunden Zeit bis die App im ersten Application Idle sich im iOS Systemkern meldet als "ich bin geladen". Wenn Du im 1. FormOnShow länger brauchst, wirst Du vom iOS Betriebssystem SOFORT terminiert! Mavarik |
AW: ActivityIndicator nach dem Programmstart
Also wäre das einfachste Workaround, im OnFormShow ein Timer (Interval auf 10 ms oder so) zu starten, der nur einmal ausgeführt wird?
Das ganze in ein Thread zu packen würde jetzt viel zu viel arbeit machen, da eigentlich schon fast alles fertig ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:23 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