Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Auslesen ob die App (Android/iOS im Vordergrund läuft (https://www.delphipraxis.net/211064-auslesen-ob-die-app-android-ios-im-vordergrund-laeuft.html)

DaCoda 22. Jul 2022 16:46

Auslesen ob die App (Android/iOS im Vordergrund läuft
 
Wie kann man ermitteln, ob die App unter iOS und Android gerade im Vordergrund aktiv ist, oder im Hintergrund ?
Ich möchte nur eine Kommunikation aufbauen, wenn die App im Vordergrund ist und nicht wenn sie im "kürzlich verwendete Apps" ist.

TurboMagic 22. Jul 2022 18:32

AW: Auslesen ob die App (Android/iOS im Vordergrund läuft
 
Hast du Mal getestet ob eine App im Hintergrund überhaupt was macht?
z.B. 1000ms Timer der dann immer eine Variable inkrementiert und
anzeigt? Wird die weitergezahlt wenn die App in Hintergrund gerät?

mjustin 22. Jul 2022 18:49

AW: Auslesen ob die App (Android/iOS im Vordergrund läuft
 
Zitat:

Zitat von DaCoda (Beitrag 1509082)
Wie kann man ermitteln, ob die App unter iOS und Android gerade im Vordergrund aktiv ist, oder im Hintergrund ?
Ich möchte nur eine Kommunikation aufbauen, wenn die App im Vordergrund ist und nicht wenn sie im "kürzlich verwendete Apps" ist.

Über die Android API ist das so möglich:

Code:
isRunningInForeground = getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)
(nach https://stackoverflow.com/questions/...ity-is-running)

Ich arbeite nicht mit Multiplatform-Delphi, aber es sollte mit wenig Aufwand möglich sein das nach Delphi umzuschreiben.

DaCoda 22. Jul 2022 19:04

AW: Auslesen ob die App (Android/iOS im Vordergrund läuft
 
@TurboMagic: Ja es läuft weiter und incrementiert fröhlich den Zähler :-(

@mjustin: Danke für den Tip, ich werde mal schauen wie ich das in Delphi machen kann...

Rollo62 22. Jul 2022 19:27

AW: Auslesen ob die App (Android/iOS im Vordergrund läuft
 
Zitat:

Zitat von DaCoda (Beitrag 1509082)
Wie kann man ermitteln, ob die App unter iOS und Android gerade im Vordergrund aktiv ist, oder im Hintergrund ?

Du könntest die TApplicationEvents benutzen und den aktuellen Status für die App mitschreiben.
Dafür reicht normalerweise BecameActive und EnteredBackground oder WillBecomeInactive aus.

DaCoda 22. Jul 2022 19:42

AW: Auslesen ob die App (Android/iOS im Vordergrund läuft
 
Ich habe es jetzt so gelöst:

Code:
{* im uses Abschnitt *}
uses
  FMX.Platform;

{im TForm-Abschnitt *}
  procedure FormCreate(Sender: TObject);
private
  AppIsEnabled: Boolean;
  function HandleAppEvent(   AAppEvent : TApplicationEvent;  AContext : TObject ) : Boolean;

[* im Implementation - Abschnitt *}
procedure TfrmMain.FormCreate(Sender: TObject);
var
  SvcEvents : IFMXApplicationEventService;
begin
    if TPlatformServices.Current.SupportsPlatformService
      ( IFMXApplicationEventService, IInterface( SvcEvents ) )
    then
      SvcEvents.SetApplicationEventHandler( HandleAppEvent );
end;


function TfrmMain.HandleAppEvent(   AAppEvent : TApplicationEvent;  AContext : TObject ) : Boolean;
begin
    case AAppEvent of
      TApplicationEvent.FinishedLaunching : ;
      TApplicationEvent.BecameActive : AppIsEnabledEnabled := True;
      TApplicationEvent.WillBecomeInactive : ;
      TApplicationEvent.EnteredBackground : AppIsEnabled := False;
      TApplicationEvent.WillBecomeForeground : ;
      TApplicationEvent.WillTerminate : ;
      TApplicationEvent.LowMemory : ;
      TApplicationEvent.TimeChange : ;
      TApplicationEvent.OpenURL : ;
    end;
    Result := True;
end;
Scheint so korrekt zu funktionieren, vielleicht kann es ja mal jemand brauchen.

Lieben Dank für Eure Tipps!


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:29 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