Thema: Delphi Android ANR Wait

Einzelnen Beitrag anzeigen

Benutzerbild von wjjw
wjjw

Registriert seit: 3. Aug 2017
Ort: Wiener Neustadt, Österreich
75 Beiträge
 
Delphi 12 Athens
 
#6

AW: Android ANR Wait

  Alt 19. Nov 2024, 10:36
Hallo!

Hab das selbe Problem.
Ein einfaches Sleep(5000) bringt die Endlosmeldung (alle 5 Sekunden) "Projekt reagiert nicht - App schließen / Warten"!

Einfacher Code zum Testen:
Delphi-Quellcode:
procedure TForm1.Sl(sec: Integer);
var s: String;
    t1, t2: TDateTime;
begin
   t1 := Now;
   Sleep(sec * 1000);
   t2 := Now;
   s := 'Sleep(' + IntToStr(sec * 1000) + '): ';
   s := s + FormatDateTime('h:n:s.z', t1);
   s := s + ' to ';
   s := s + FormatDateTime('h:n:s.z', t2);
   Memo1.Lines.Add(s);
end;
Ergebnisse:
Sl(4) -> Memo1 -> 10:18:00.000 to 10:18:04.000
Sl(8) -> Memo1 -> 10.18.00.000 to 10.18:05.096 (also wird nach 5 Sekunden abgebrochen statt der gewünschter 8)!

Das heisst auch er bricht in Mitten der Sleep-Funktion nach 5 Sekunden ab.
Ich frage mich nur wenn ein Code "unerwarteterweise" länger als 5 Sekunden läuft, welche unerwarteten Effekte das haben kann.
Bei "erwarteten" Aktionen die länger dauern können eh kein Problem.

Und das heisst das das alles war nur irgendwie länger dauern KÖNNTE ich es als TThread / TTask implementieren muss.
Das es für diesen Zweck nichts einfacheres und sicheres gibt.
Es wäre ja auch ok wenn der Dialog nicht periodisch immer wieder kommen würde, wenn doch es die Aktion bereits beendet ist ->
ODER soll ich statt Sleep(8000) ein Sleep(4000) und danach ein Sleep(4000) einbauen (simpel dargestellt)??

Ich könnte die ganze App in einen 2. Thread packen...
Werner Weiß
--
Werner
  Mit Zitat antworten Zitat