Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   iOS ActivityIndicator nach dem Programmstart (https://www.delphipraxis.net/178647-activityindicator-nach-dem-programmstart.html)

Sir Rufo 19. Jan 2014 17:31

AW: ActivityIndicator nach dem Programmstart
 
Zitat:

Zitat von Crocotronic (Beitrag 1244406)
Entweder willst du mich trollen oder du hast wirklich keine Ahnung...

Wieso, du willst doch keinen extra Thread. Dann geht das so - eben nicht toll, aber du willst es doch so.

Crocotronic 19. Jan 2014 17:34

AW: ActivityIndicator nach dem Programmstart
 
Du weißt um was es geht? iOS und so?

Furtbichler 19. Jan 2014 17:35

AW: ActivityIndicator nach dem Programmstart
 
Zitat:

Zitat von Crocotronic (Beitrag 1244406)
oder du hast wirklich keine Ahnung...

Ertappt. Ich tu immer nur so. Aber Du kannst es ja trotzdem einfach mal so ausprobieren.

Sir Rufo 19. Jan 2014 18:15

AW: ActivityIndicator nach dem Programmstart
 
Zitat:

Zitat von Crocotronic (Beitrag 1244409)
Du weißt um was es geht? iOS und so?

Ja, deswegen ja auch der Hinweis von mir auf den separaten Thread.

Furtbichler 19. Jan 2014 18:38

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.

Crocotronic 19. Jan 2014 18:42

AW: ActivityIndicator nach dem Programmstart
 
Okay, mal ein Beispiel: Das hier will ich zum Laufen bekommen
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject); // Gleiches Ergebnis im OnFormCreate
begin
 ZeigeActivityIndicator('test');
 Sleep(10000);
 VersteckeActivityIndicator
end;
Was passiert?
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 lassen
Ein Thread würd das Problem lösen, aber 1000 andere aufwerfen.

Furtbichler 19. Jan 2014 18:48

AW: ActivityIndicator nach dem Programmstart
 
Zitat:

Zitat von Crocotronic (Beitrag 1244428)
Ein Thread würd das Problem lösen, aber 1000 andere aufwerfen.

Quatsch. Versuche es mal mit Dazulernen, Du gehst doch mittlerweile auch ohne Mutti über ne grüne Ampel, ne wahr?
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:
Procedure VielArbeit();
Begin
  ZeigDenActivityIndicator();
  Schritt1;
  StubsDenActivityIndicator();
  Schritt2;
  StubsDenActivityIndicator();
  ...
  VerbergeDenActivityIndicator();
End;
Mal sehen, was Du jetzt antwortest.

Crocotronic 19. Jan 2014 19:24

AW: ActivityIndicator nach dem Programmstart
 
Zitat:

Zitat von Furtbichler (Beitrag 1244431)
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.

Es geht mir in erster Linie doch gar nich um das "Schild", sondern um das Problem, dass der User die 10 Sekunden auf den Splash-Screen guckt, anstatt auf das Formular! Alles, was ich will ist, dass die Arbeit erst gestartet wird, wenn das verdammte Formular fertig geladen wurde und alle Controls schön angezeigt werden.
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)

Mavarik 19. Jan 2014 20:26

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

Crocotronic 19. Jan 2014 20:35

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:05 Uhr.
Seite 2 von 3     12 3      

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