Einzelnen Beitrag anzeigen

QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.929 Beiträge
 
Delphi 12 Athens
 
#13

AW: versehentliches Beenden einer Android App

  Alt 3. Mai 2024, 15:25
Hi,
wo kommt denn das TAppViewModel her?
Das ist eine Klasse in meiner Anwendung.

TAppForm ist das Main-Formular der APP

procedure TAppForm.FormCreate(Sender: TObject); ist der prozedur kopf eines OnFormCreate Ereignisses auf dem MainFormular.

Delphi-Quellcode:
    //Intercept LifeCycleEvents
    var aFMXApplicationEventService:IFMXApplicationEventService
    if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, IInterface(aFMXApplicationEventService) ) then
      aFMXApplicationEventService.SetApplicationEventHandler(HandleAppEvent)
    else
      Tlog.d('Application Event Service is not supported.');
Dieser Code hinterlegt eine Methode HandleAppEvent als Ereignis Handler für LifeCycleEvents einer Android App.
Immer wenn ein solches Event auf tritt wird die Methode HandleAppEvent von Android benachrichtigt , damit du darauf reagieren kannst.


function TAppForm.HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean; Das ist der Methoden kopf der Methode die wir als EventHandler hinterlegt haben.

Delphi-Quellcode:
  case AAppEvent of
    TApplicationEvent.FinishedLaunching: TLog.d('FinishedLaunching'); // Only Android, Probably IOS too (App has been started by the user)
    TApplicationEvent.BecameActive: TLog.d('BecameActive'); // Both (App is in USE)
    TApplicationEvent.WillBecomeInactive: TLog.d('WillBecomeInactive'); // Only Android, Probably IOS too (Focus is about to switch to other app)
    TApplicationEvent.EnteredBackground: // Both (App is beeing executed while in the Background)
    Begin
      TLog.d('EnteredBackground');
      TAppViewModel.getinstance.EnterBackground;
    End;
    TApplicationEvent.WillBecomeForeground: // Both (App is focused)
    Begin
      TLog.d('WillBecomeForeground') ;
      TAppViewModel.getinstance.EnterForeground;
    End;
    TApplicationEvent.WillTerminate:TLog.d('WillTerminate') ; // Both (User terminted the APP)
    TApplicationEvent.LowMemory: TLog.d('LowMemory'); // Both (Please use less memory, please! But how?)
    TApplicationEvent.TimeChange:TLog.d('TimeChange') ; // IOS
    TApplicationEvent.OpenURL:TLog.d('OpenURL') ; // IOS
  end;
  Result := True;
Das ist ein Beispiel code dessen was man an Events im Eventhandler abfangen kann. Ich logge die meisten Events nur und wenn die Anwendung in den Hintergrund gerät schalte ich NFC und GPS ab und wenn sie in den Vordergrund kommt schalte ich es wieder ein. Ich schone damit den Akku. Für dich ist das vielleicht gar nicht wichtig .

  TApplicationEvent.WillTerminate:TLog.d('WillTerminate') ; // Both (User terminted the APP) Das Event aber vielleicht schon. Wenn dieses Event kommt kannst du noch eingreifen befor deine App stirbt.

Wenn du alle livecycle Events und das onException event deiner App loggs ist das vielleicht auch hilfreich.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat