Thema: Delphi Android ANR Wait

Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#9

AW: Android ANR Wait

  Alt 19. Nov 2024, 12:59
Das Beispiel "TTask from the Parallel Programming Library" ist ja nicht Android-spezifisch, sondern eher allgemein auf Windows gemünzt.

Es ist so, dass eine Funktion im Hintergrund noch eine Zeit weiter ausgeführt wird, bevor Android/Apple doese wirklich hart killen.
Das ist mehr für Aufräumarbeiten gedacht, bevor die App schliest, aber nicht zur permanenten Hintergrundverarbeitung.
So einfach ist das bei den Mobilen nicht mehr.

Vielleicht hakt es beim Sleep, was Android negativ aufstößt, Du könntest mal folgendes stattdessen versuchen, bei dem der Task aktiv bleibt.

Delphi-Quellcode:
Uses
    ...
    System.DateUtils
    ...

procedure TForm1.Button1Click(Sender: TObject);
var
 aTask: ITask;
begin
 aTask := TTask.Create(
   procedure
   var
       LDelay : TDateTime;
       LCount : Int64;
   begin
     LDelay := Now;

// sleep (3000); // 3 seconds

     LCount := 0;

     while MilliSecondsBetween( Now, LDelay ) < 5000 do
     begin
         //Loope brutalst hier herum, zähle mal zum Spass
         Inc( LCount );
     end;

     TThread.Synchronize(TThread.Current,
       procedure
       begin
         ShowMessage ('Hello ' + LCount.ToString );
       end);
   end);
   aTask.Start;
end;
  Mit Zitat antworten Zitat