![]() |
Android APP crashed / startet neu bei Bild / Foto über die Actionlist / Systemkamera
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:
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: ![]() In dem ersten Formular, das nach dem Neustart Ihrer App erstellt wird, sollten Sie den MessageManager im OnCreate-Event einbinden. Hier ist ein Beispiel:
Delphi-Quellcode:
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 |
AW: Android APP crashed / startet neu bei Bild / Foto über die Actionlist / Systemkam
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 ? |
AW: Android APP crashed / startet neu bei Bild / Foto über die Actionlist / Systemkam
Zitat:
Im Beispiel Projekt von Embarcadero funktioniert der Aufruf immer, weil der Test nur auf einer einzigen Form aufbaut. Sobald die Form die nach dem Start geladen wird eine andere ist läuft der Messagehandler ins leere. Zitat:
Zitat:
|
AW: Android APP crashed / startet neu bei Bild / Foto über die Actionlist / Systemkam
Zitat:
Also your LLM would make for bad spy. Zitat:
1.The first form that is Instanciated is a Splash-screen...while database tables are cashed and NFC and similar subscriptions are initialized. 2.Then My Main-Formular hosting the the Viewports and the Menu is initialized and the Splash screen is closed. 3.Depending on the Navigation inside the APP a Form is instanciated to be shown through the Viewports. The Form is closed when App-navigation has to create and show a different form through the Viewports. That is the setup. And so far I could allways use the takephoto action. Is there something wrong or risky that would affect the Messageque in that scenario? |
AW: Android APP crashed / startet neu bei Bild / Foto über die Actionlist / Systemkam
Zunächst mal können wir gern im deutschen bleiben :-D
Der original Post war nur englisch, weil ich die Erfahrung gemacht hab, dass die ohnehin schon sehr seltene Spezies des Mobile-Developers im Delphi Umfeld wenn überhaupt englisch spricht :lol: Zitat:
Wie hoch ist deine RAM Auslastung? Ich verwende um das einfach und schnell auf Android festzustellen das wirklich grandiose Framework ![]() Einfach die Unit
Code:
einbinden.
DW.Androidapi.JNI.Os
Code:
gibt dir dann den verwendeten RAM deiner APP in Byte aus (Also einfach nochmal div (1024*1024) rechnen um auf die MB zu kommen)
TJDebug.JavaClass.getNativeHeapSize
Wenn du dauerhaft unter den 100 MB liegst, bekommst du wahrscheinlich niemals etwas davon mit. Und die 1-2 mal von 100 wird sich wahrscheinlich kein Anwender beschweren sondern einfach nochmal von Vorne anfangen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:47 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