AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Android APP crashed / startet neu bei Bild / Foto über die Actionlist / Systemkamera
Thema durchsuchen
Ansicht
Themen-Optionen

Android APP crashed / startet neu bei Bild / Foto über die Actionlist / Systemkamera

Ein Thema von fisipjm · begonnen am 28. Jan 2025 · letzter Beitrag vom 30. Jan 2025
Antwort Antwort
fisipjm

Registriert seit: 28. Okt 2013
303 Beiträge
 
#1

Android APP crashed / startet neu bei Bild / Foto über die Actionlist / Systemkamera

  Alt 28. Jan 2025, 12:05
Hi, einfach nur ein kleiner Post weil ich dazu online nichts gefunden hatte und es mich das ein oder andere graue Haar gekostet hat bis ich es raus hatte. Vielleicht hilft es ja jemand.

Das Problem

Wenn Sie die TakePhotoAction aus der ActionList verwenden, wird Ihre App in den Hintergrund verschoben, und die Kamera-App des Systems wird in den Vordergrund gebracht. Viele Hersteller nutzen diesen Moment, um den Speicher aufzuräumen, was dazu führen kann, dass Ihre App vom System angehalten wird.

Nach Abschluss der Fotoaufnahme wird die TPhotoActivityResponseListener.onResponse von FMX.MediaLibrary.Android ausgelöst. Allerdings ist die ursprüngliche Methode LParams.OnDidFinishTaking nicht mehr zugewiesen, da die App während des Prozesses angehalten wurde.

Die Schwelle für dieses Verhalten hängt von den Speicherverwaltungseinstellungen des Herstellers ab. Basierend auf meinen Erkenntnissen:
  • Samsung-Geräte sind tendenziell am aggressivsten und halten Apps oft an, wenn die Speichernutzung ~50 MB überschreitet.
  • Andere Hersteller beginnen möglicherweise damit, Apps bei etwa ~100 MB anzuhalten.
  • Wenn speicheroptimierende Einstellungen vom Hersteller aktiviert sind, scheint ~500 MB eine "harte Grenze" zu sein, bei der Ihre App fast jedes Mal angehalten wird.

Um dies zu umgehen, sollten Sie eine Logik implementieren, die das Anhalten und Wiederherstellen der App korrekt behandelt, oder alternative Wege suchen, um den Fotoaufnahmeprozess zu verwalten.

Die Lösung

Stellen Sie zunächst sicher, dass der Code, der im OnTakePhotoFinish-Event ausgeführt wird, nur das Bild verarbeitet, das an das Event übergeben wird, und dass alle an diesem Prozess beteiligten Komponenten nach dem Neustart der App ordnungsgemäß verfügbar sind. Falls erforderlich, speichern Sie den aktuellen Zustand Ihrer Anwendung mithilfe des SaveState-Events. Dies ermöglicht es Ihnen, die benötigten App-Informationen wiederherzustellen und die richtigen Punkte nach dem Neustart der App zu navigieren. Weitere Details finden Sie in der FireMonkey Save State-Dokumentation: https://docwiki.embarcadero.com/RADS...key_Save_State

In dem ersten Formular, das nach dem Neustart Ihrer App erstellt wird, sollten Sie den MessageManager im OnCreate-Event einbinden. Hier ist ein Beispiel:

Code:
type
      TStartForm = class(TForm)
        procedure FormDestroy(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private-Deklarationen }
        procedure MessageHandlerTakePhoto(const Sender: TObject; const M: TMessage);
      end;
   
    procedure TStartForm.FormCreate(Sender: TObject);
    begin
    TMessageManager.DefaultManager.SubscribeToMessage(TMessageDidFinishTakingImageFromCamera, MessageHandlerTakePhoto);
    end;
   
    procedure TStartForm.FormDestroy(Sender: TObject);
    begin
      TMessageManager.DefaultManager.Unsubscribe(TMessageDidFinishTakingImageFromCamera, MessageHandlerTakePhoto);
    end;
   
    procedure TStartForm.MessageHandlerTakePhoto(const Sender: TObject; const M: TMessage);
    begin
      if M is TMessageDidFinishTakingImageFromCamera then
      begin
        if Assigned(TMessageDidFinishTakingImageFromCamera(M).Value) then
        begin
          // Do something with the TMessageDidFinishTakingImageFromCamera(M).Value (TBitmap)
        end;
      end;
    end;

vG
PJM
  Mit Zitat antworten Zitat
QuickAndDirty

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

AW: Android APP crashed / startet neu bei Bild / Foto über die Actionlist / Systemkam

  Alt 30. Jan 2025, 08:45
1. Das macht eigentlich TTakePhotoAction unbrauchbar.
2. In Tests habe ich das noch nicht erlebt, aber der Aufwand ist doch erheblich, für ein simples Foto.
3. Ich kenne niemanden der Leute in internet foren siezt, da die Netiquette hier das Du vorsieht. Schreibe ich hier mit einem Bot/LLM ?
Andreas
Monads? Wtf are Monads?
  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 16:58 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 by Thomas Breitkreuz