AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Erkennen wenn Programm "zwangsweise" beendet wird?
Thema durchsuchen
Ansicht
Themen-Optionen

Erkennen wenn Programm "zwangsweise" beendet wird?

Ein Thema von sko1 · begonnen am 18. Aug 2017 · letzter Beitrag vom 18. Aug 2017
Antwort Antwort
Seite 2 von 2     12   
Rollo62

Registriert seit: 15. Mär 2007
4.118 Beiträge
 
Delphi 12 Athens
 
#11

AW: Erkennen wenn Programm "zwangsweise" beendet wird?

  Alt 18. Aug 2017, 15:28
Die ApplicationEvents die Sebastion erwähnt sind ein "Muss", sich darum zu kümmern.
Wenn du die LowMemory nicht bearbeitest wird deine App gekillt.
Bei den BecameActive, etc. bin ich nicht sicher, könnte aber auch sein das diese bearbeitet sein wollen um nicht dein Programm wieder neustarten zu lassen.

Ich mache das automatisch bei jeder App so, und die Programme können im Hintergrund weiterleben.

Delphi-Quellcode:
procedure TView_Manager.AppEvents_Subscribe;
var
  AppEventSvc: IFMXApplicationEventService;

begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, IInterface(AppEventSvc)) then
    AppEventSvc.SetApplicationEventHandler(EvOnAppEvent);

end;

function TView_Manager.EvOnAppEvent(AAppEvent: TApplicationEvent;
                                      AContext: TObject): Boolean;
var
  cmd : TS4Api_SysEvents.TApi;

begin

  Result := True;

  cmd := TS4Api_SysEvents.TApi.None;

  case AAppEvent of
    TApplicationEvent.FinishedLaunching : cmd := TS4Api_SysEvents.TApi.FinishedLaunching;
    TApplicationEvent.BecameActive : cmd := TS4Api_SysEvents.TApi.BecameActive;
    TApplicationEvent.WillBecomeInactive : cmd := TS4Api_SysEvents.TApi.WillBecomeInactive;
    TApplicationEvent.EnteredBackground : cmd := TS4Api_SysEvents.TApi.EnteredBackground;
    TApplicationEvent.WillBecomeForeground: cmd := TS4Api_SysEvents.TApi.WillBecomeForeground;
    TApplicationEvent.WillTerminate : cmd := TS4Api_SysEvents.TApi.WillTerminate;
    TApplicationEvent.LowMemory : cmd := TS4Api_SysEvents.TApi.LowMemory;
    TApplicationEvent.TimeChange : cmd := TS4Api_SysEvents.TApi.TimeChange;
    TApplicationEvent.OpenURL : cmd := TS4Api_SysEvents.TApi.OpenURL;
    else
                                            ;
  end;

  if cmd <> TS4Api_SysEvents.TApi.None then
  begin
    TS4Msg_SysEvents.SendMessage(Self, cmd); // Ja ich weiss, ich leite ein Event in einen anderen Event weiter
    // Aber so kann ich diese sehr leicht abfangen und evtl. an verschiedenen Stellen verarbeiten
  end;

end;
Rollo
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#12

AW: Erkennen wenn Programm "zwangsweise" beendet wird?

  Alt 18. Aug 2017, 15:33
Und wenn ich das Ganze richtig gelesen habe, gibt es das auch nur für Android/iOS, wenn ich das Projekt auch für Windows compilieren möchte brauch ich dann entsprechende Compilerschalter...
Keine Kompilerschalter, einfach eine Abfrage:

Delphi-Quellcode:
var
  AppEventSvc: IFMXApplicationEventService;
begin

  if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, IInterface(AppEventSvc)) then
    AppEventSvc.SetApplicationEventHandler(HandleAppEvent);

end;

Edit: Da ist jemand dazwischengerollot ;D
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#13

AW: Erkennen wenn Programm "zwangsweise" beendet wird?

  Alt 18. Aug 2017, 17:00
Ist mir auch aufgefallen: wischen der Anwendung aus der History Liste killt sie sofort, auch wenn sie zum Beispiel noch in einem Thread einen Upload macht.

Daher muß man dann alle Daten die gesendet werden sollen noch zwischenspeichern und beim nächsten Start den Upload wiederholen.

Aber die Frage ist noch offen: wie kann man erkennen, wenn das eigene Programm abgeschossen wird? (Um dann z.B. noch eine Notification zu erzeugen)
Michael Justin
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#14

AW: Erkennen wenn Programm "zwangsweise" beendet wird?

  Alt 18. Aug 2017, 17:29
Ich habe zwar keine Ahnung von Android Programmierung, aber wie kann man bei Android überhaupt eine Anwendung "beenden" ohne Sie über die Taskliste rauszuwerfen? Selbst eine Anwendung die das saubere Beenden über das mehrfache Klicken des Zurück-Buttons angeblich unterstützt, steht nach dem Schließen immer noch in der Taskliste und kann da vermeintlich auch nochmal beendet werden.

Das saubere Beenden einer Anwendung könnte man evtl. dadurch erkennen, dass während des sauberen Shutdown Prozesses in einer Datei oder Datenbank auf dem Gerät ein entsprechender Wert gesetzt wird. Wird die Anwendung gekillt, dann bleibt der Wert auf dem Status "nicht sauber beendet" und das Programm kann den letzten Zustand wiederherstellen. Ob das jetzt die beste Lösung ist kann ich aber nicht sagen.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.652 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Erkennen wenn Programm "zwangsweise" beendet wird?

  Alt 18. Aug 2017, 23:03
Aber die Frage ist noch offen: wie kann man erkennen, wenn das eigene Programm abgeschossen wird? (Um dann z.B. noch eine Notification zu erzeugen)
Mit den genannten Events.

Rollo62 hat ja auch ein Beispiel gepostet.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 16:11 Uhr.
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