![]() |
Android App "Reagiert nicht mehr, Warten oder Beenden"?
Hallo,
bei einer sehr langen Datenbank-Operation (kann auch mal 5 Minuten benötigen) kommt irgendwann von Android obige Meldung, obwohl ich immer wieder in der Datenbank-Abarbeitungsschleife Application.ProcessMessages aufrufe. Muss man unter Android dem Betriebssystem irgendwie anders mitteilen, dass man "noch am Leben" ist? Ciao Stefan |
AW: Android App "Reagiert nicht mehr, Warten oder Beenden"?
|
AW: Android App "Reagiert nicht mehr, Warten oder Beenden"?
Hallo,
ich versuche jetzt auf Threads umzustellen, bekomme beim
Delphi-Quellcode:
Thread.Resume;
eine Warnung, das wäre deprecated! Da ich ungern so was verwende, was wäre die Alternative? Ciao Stefan |
AW: Android App "Reagiert nicht mehr, Warten oder Beenden"?
Zitat:
Wenn du den Thread pausieren musst, würde ich deinem Thread-Objekt eine Variable verpassen die das ganze steuert.
Delphi-Quellcode:
Alternativ zu TThread könntest du dir auch den TTask ansehen.
TMyThread = class(TThread)
procedure Execute; override; public LassLaufen: Boolean; end; procedure TMyThread.Execute; begin while Abbruchbedinung <> True do begin if LassLaufen then begin //Hier wichtiger Code der nicht unterbrochen werden soll end else Sleep(10); end; end; |
AW: Android App "Reagiert nicht mehr, Warten oder Beenden"?
Danke, das war der richtige Denkanstoß!
Ich wollte Resume nicht zum Anhalten/Starten verwenden sondern nur starten nach Create (suspended = true) aber dafür findet sich ja dann Thread.Start :-) Ein anderes Problem hat sich dabei aber trotzdem aufgetan: In einer Android-App kann man die Back-Taste drücken und dann ist das Programm geschlossen, der Thread läuft aber noch weiter! Jetzt suche ich eine Möglichkeit, im OnKeyUp eines Formulars zu prüfen ob der Thread noch lebt. Bevor er erzeugt wurde, kann man Nil abfragen, war er aber schon mal gestartet dann funktioniert Nil nicht mehr... Was wäre der richtige Weg, muss ich eine globale Variable setzen, die der Thread dann, wenn er fertig ist, rücksetzt? Ciao Stefan |
AW: Android App "Reagiert nicht mehr, Warten oder Beenden"?
Du kannst entweder das Terminated-Kennzeichen des Threads verwenden, oder selbst eine property im Thread mitführen die den Status ausweist.
Falls der Thread mit .Terminate beendet wird und gesichert ist, dass er nach dem Terminate sehr zeitnah das arbeiten einstellt, kannst du das Terminted prüfen. Falls es nach dem Terminate noch eine weile weiterläut würde ich eine eigene Variable benutzen. |
AW: Android App "Reagiert nicht mehr, Warten oder Beenden"?
Ich habe es über eine globale Variable gelöst, funktioniert wie ich mir das vorstelle...
Ciao Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:07 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