AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Thread in mobiler App beenden

Ein Thema von sko1 · begonnen am 14. Mär 2018 · letzter Beitrag vom 14. Mär 2018
Antwort Antwort
sko1

Registriert seit: 27. Jan 2017
607 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

AW: Thread in mobiler App beenden

  Alt 14. Mär 2018, 11:30
Zitat:
Wenn das Programm (der Prozess) abgeschossen wurde, dann läuft auch der Thread nicht mehr und kann somit auch nicht mehr machen.
Bist Du Dir da ganz sicher?
Das bedeutet wenn die App "abgeschossen wird" wird auch der Thread mit "abgeschossen"?

Zitat:
Aber grade bei den mobilen Betriebssystemen werden Programme ofrmals garnicht beendet, sondern nur "pausiert" ... Anwendung und Thread werden nicht beendet/abgeschossen, sondern angehalten und beim nächsten Start der Anwendung wieder fortgesetzt.
Das ist mir bekannt, meine App läuft ja auch im Hintergrund weiter!
Nur beim "Abschuss" wird der Thread, wie Du schreibst, ja auch abgeschossen, d.h. undefiniert (vielleicht gerade beim Datenbank schreiben) beendet?

Genau das will ich verhindern, sprich mit einer bestimmten Bedingung (jetzt im FormSaveState) den Thread gezielt terminieren und dann wenn das Programm wieder in den Vordergrund kommt, wieder starten.

Das hätte den Vorteil, dass man das Programm, welches im Hintergrund läuft, abschießen kann und der Thread ist zu diesem Zeitpunkt nicht vorhanden...

Da fällt mir aber gerade auf: was passiert wenn die App im Vordergrund liegt und abgeschossen wird?
Dann wird der Thread ja auch an einer x-beliebigen Stelle abgebrochen!

Dafür muss es doch eine Lösung geben, ich bin dich bestimmt nicht der einzige mit einem Thread und einer App die "abgeschossen werden kann"?

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Thread in mobiler App beenden

  Alt 14. Mär 2018, 12:27
Wenn das Programm (der Prozess) abgeschossen wurde, dann läuft auch der Thread nicht mehr und kann somit auch nicht mehr machen.
Nur wenn der Thread so erstellt wurde. Es gibt seit Ewigkeiten TSR's (Terminate and Stay Resident) wo ein Prozess einen (oder viele) Thread erstellt und sich selbst schließt wobei der Thread weiterarbeitet, total unabhängig vom Prozess (Loader).
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
607 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Thread in mobiler App beenden

  Alt 14. Mär 2018, 12:29
Zitat:
Nur wenn der Thread so erstellt wurde.
Kannst Du das bitte mit 2 Zeilen Code zeigen wie man einen Thread erstellt der sich beim Beenden des Hauptprogramms automatisch mit zerstört?

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Thread in mobiler App beenden

  Alt 14. Mär 2018, 12:41
Mit Deinem "TKalenderThread.create;" macht Du es richtig, somit bleibt das leeren/schließen des Threads dem OS vorbehalten.
Also sollte eigentlich auch der Thread mit zu sein, um dem Thread noch was abarbeiten zu lassen bevor der Prozess geschlossen wird, kann man unter Windows auch noch auf Notify-Events reagieren, gibt es Notifies auch für non-Windows?

Ps: Soweit ich mich erinner ist bei Android der Speichermanager dafür verantwortlich was alles geladen ist und was tatsächlich aus dem Speicher geworfen wird, in der Regel bleibt alles nach dem Schließen noch geladen bis der Speicher knapp wird, dann wird pö a pö mehr Speicher von geschlossenen Anwendungen freigegeben. Ob man ein entleeren forcieren kann = ungewiss.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
607 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Thread in mobiler App beenden

  Alt 14. Mär 2018, 13:06
Danke, dann hoffe ich mal das Beste

Im Normalfall sollte ja die App ununterbrochen laufen und damit auch der Thread...

Ich weiß aber leider immer noch nicht wie man vorgehen könnte wenn

a) das OS die App rauskantet weil sie im Hintergrund läuft und andere Anwendungen den Speicher brauchen
b) der Anwender die App killt
c) das Handy Resettet (Neustart) wird

Kann es da passieren dass der Thread mitten im Datenbank schreiben gekillt wird und z.B. die Datenbank kaputtmacht?

Ciao
Stefan
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.784 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Thread in mobiler App beenden

  Alt 14. Mär 2018, 13:11
.. ist es nicht so , dass wenn dem insert, update kein commit folgt die Daten verworfen werden.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.238 Beiträge
 
Delphi 12 Athens
 
#7

AW: Thread in mobiler App beenden

  Alt 14. Mär 2018, 13:08
Ich denke richtig wäre es NICHT in der App weiterzuabeiten, und die ApplicationEvents richtig auszuwerten.

Zitat:
TApplicationEvent.FinishedLaunching : ;
TApplicationEvent.BecameActive : RestarteThreads;
TApplicationEvent.WillBecomeInactive : Halte Treads an;
TApplicationEvent.EnteredBackground : ;
TApplicationEvent.WillBecomeForeground: ;
TApplicationEvent.WillTerminate : ;
TApplicationEvent.LowMemory : ;
Statt der App dafür einen richtigen Backgroundservice verwenden.

Ich habe auch gesehen das Android anscheinend im Hintergrunde (zumindest eine zeitlang) normal weiterarbeitet wenn der Bildschirm schon schwarz ist.
Das ist ganz praktisch, ich weiss aber nicht ob das Verhalten nicht nach einem Update auf einmal anders ist.

iOS macht das aber meines Wissens nicht so ohne weiteres im Hintergrund.

Rollo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:03 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