![]() |
[Fmx] App crasht OnScreenRotation
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,
ich bräuchte mal dringend eure Hilfe, ein Projekt das schon etwas weiter war crasht when der Screen gedreht wird. [RadStudio 10 Seattle, Upd1, XCode 7.2, VmWare 8.2, Win8.1]. Crash getested im Moment unter Android, womöglich auch unter iOS. Natürlich habe ich erstmal alle Codes von mit gecheckt, und dann den Code soweit abgespeckt das nur noch ein Fmx Gerüst übrig bleibt. Hier ist ein Demo wo der Crash auch passiert, es sind nur noch Visual Komponenten drin, ohne irgendeine Funktion, ein Stylebook (crash aber auch wenn ich es nicht verbinde). Ich benutze zur Organisation Header, Body und Footer Panels, in die TabControl sitzen welche verschiedene Views zeigen können. Die Views (Panels) sind im Demo hier aber auch leer. Wie kann das abstürzen ?? Ich bin ziemlich ratlos was dies jetzt wieder sein könnte, habe AppEvents und ScreenOrientationMessage abgefangen in ein Memo. Es passiert Folgendes: (unter Android getestet, wie es jetzt bei iOS ist habe ich nicht getestet) - Es startet immer OK, egal ob H oder V ScreenOrientation - nur wenn die laufende App gedreht wird crasht es, und es werden folgene Events geschickt - OnScreenOrientation change message (ja klar) - WillBecomBackground (warum ?) - WillTerminate (??? Hilfe) Hat vielleocht jemand ein Idee ? |
AW: [Fmx] App crasht OnScreenRotation
Bist du sicher, dass sie crasht und nicht normal beendet wird? Es ist nämlich tatsächlich so, dass Android eine App nicht nachträglich rotieren kann. Die App wird intern jedes mal, wenn man den Bildschirm dreht, beendet und mit der neuen Auflösung neugestartet. Da bin ich vor ein paar Jahren auch drüber gestolpert, als ich mal ein bisschen mit App-Entwicklung für Android rumgespielt hatte (mit Java). Das hat Google wirklich dumm gelöst.
Ich glaube, man konnte es irgendwie verhindern, war aber ein undokumentiertes Feature. Wobei man prinzipiell seine App aber eh so schreiben muss, dass sie jeder Zeit unterbrochen werden kann, weil Apps im Hintergrund automatisch terminiert werden können, um den Energieverbrauch zu senken. Also macht man es besser gleich richtig. |
AW: [Fmx] App crasht OnScreenRotation
Eigentlich sollte der Bildschirm drehen, das funktionierte bisher immer.
Hier ist vor kurzem auch ein Beispiel von Sir Rufo ![]() Das habe ich getestet und es dreht sich wunderbar unter verschiedenen Geräten. Es ist aber so wie ich geschrieben hatte, Android oder Fmx senden WillBecomeBackground und WillTerminate Also was kann das sein ? Ich habe schon versucht Application/ScreenOrientation festzusetzen, aber das kracht auch. Vermutlich liegt es doch irgendwo an den Komponenten selbst. Z.B. TMultiView fragt auch die ScreenOrientation ab (benutze ich aber im Beispiel nicht mehr), könnten irgendwelche anderen Komponenten abstürzen wenn das Device gedreht wird ? Rollo |
AW: [Fmx] App crasht OnScreenRotation
Zitat:
|
AW: [Fmx] App crasht OnScreenRotation
Lösche mal die AndroidManifest.template.xml und lass die neu erzeugen. Ich denke dann funktioniert es. Problem liegt vermutlich an dieser Stelle:
Code:
Da fehlen einige Einträge, mal als Vergleich die von uns:
<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
android:label="%activityLabel%" android:configChanges="orientation|keyboardHidden" android:launchMode="singleTask">
Code:
<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
android:label="%activityLabel%" android:configChanges="orientation|keyboard|keyboardHidden|navigation|screenLayout|screenSize" android:launchMode="singleTask"> |
AW: [Fmx] App crasht OnScreenRotation
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich habe mittlerweile das Demo immer weiter abgespeckt:
- TabControls raus - crash - Panels raus - crash - Stylebook raus - crash - DataModule raus - crash - alle uses die unbenutzt sind raus -crash Natürlich immer alle DCUs etc gelöcht, das ganze Android Verzeichnis - crash Das macht mir langsam Angst :pale: Ich habe jetzt nur noch die Form it einem Memo das die AppEvents und ScreenOrientation zeigt - crash Hab die abgespeckte Demo nochmal im Anhang T81_....
Delphi-Quellcode:
unit UMain_Frm;
interface uses System.SysUtils, System.Types, System.UITypes, System.Classes , FMX.Forms // , System.Variants // FMX.Types, FMX.Controls, FMX.Forms, FMX.StdCtrls, // FMX.Layouts, FMX.Objects, FMX.ImgList, // FMX.Controls.Presentation , FMX.Platform // , FMX.ScrollBox , FMX.Memo , System.Messaging, FMX.Types, FMX.Controls, FMX.Controls.Presentation, FMX.ScrollBox ; type TMain_Frm = class(TForm) Memo1: TMemo; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private FOrientationChangedId: Integer; { Private declarations } procedure EvOnOrientationChanged(const Sender: TObject; const Msg: TMessage); function EvOnAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean; procedure Log(const ALog : String); public { Public declarations } end; var Main_Frm: TMain_Frm; implementation {$R *.fmx} procedure TMain_Frm.FormCreate(Sender: TObject); var aFMXApplicationEventService: IFMXApplicationEventService; begin if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, IInterface(aFMXApplicationEventService)) then aFMXApplicationEventService.SetApplicationEventHandler(EvOnAppEvent) else Log('Application Event Service is not supported.'); //Subscribe to orientation change events in OnCreate or similar FOrientationChangedId := TMessageManager.DefaultManager.SubscribeToMessage( TOrientationChangedMessage, EvOnOrientationChanged); end; procedure TMain_Frm.FormDestroy(Sender: TObject); begin //Unsubscribe from orientation change events in OnDestroy or similar TMessageManager.DefaultManager.Unsubscribe(TOrientationChangedMessage, FOrientationChangedId); end; procedure TMain_Frm.Log(const ALog: String); begin Memo1.Lines.Insert(0, ALog); end; procedure TMain_Frm.EvOnOrientationChanged(const Sender: TObject; const Msg: TMessage); begin Log('Orientation changed: ' + Msg.ToString); end; function TMain_Frm.EvOnAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean; begin case AAppEvent of TApplicationEvent.FinishedLaunching: Log('Finished Launching'); TApplicationEvent.BecameActive: Log('Became Active'); TApplicationEvent.WillBecomeInactive: Log('Will Become Inactive'); TApplicationEvent.EnteredBackground: Log('Entered Background'); TApplicationEvent.WillBecomeForeground: Log('Will Become Foreground'); TApplicationEvent.WillTerminate: Log('Will Terminate'); TApplicationEvent.LowMemory: Log('AppEvent: Low Memory'); TApplicationEvent.TimeChange: Log('AppEvent: Time Change'); TApplicationEvent.OpenURL: Log('AppEvent: Open URL'); else Log('AppEvent: Unknown'); end; Result := True; end; end. |
AW: [Fmx] App crasht OnScreenRotation
@bra
Dankesehr, du bist mein Retter. Das wars. Wie kann denn sowas passieren ? Also ist mein neuer Fmx-RescuePlan: vor jedem Build die xml löschen. Danke, danke, danke :thumb: Rollo |
AW: [Fmx] App crasht OnScreenRotation
Bei uns ist die App ursprünglich abgestürzt, sobald eine Bluetooth-Tastatur angeschlossen wurde. Das war derselbe Grund gewesen. Scheinbar werden die XMLs immer mal erweitert ;)
|
AW: [Fmx] App crasht OnScreenRotation
Liste der Anhänge anzeigen (Anzahl: 1)
@bra
So ganz verstehe ich es noch nicht, es stimmt immer noch nicht mit deinem Template überein. Aber es dreht jetzt wenigstens. Anhang 44801 Links ist neu angeletes Template, rechts das alte, korrupte Template. Was hat das jetzt mit dem ScreenOrientation zu tun, vieleicht hat noch jemand eine Erklärung ? Was sollte ich denn in Fmx Einstellen damit das Template möglichst Narrensicher wird ? Rollo |
AW: [Fmx] App crasht OnScreenRotation
Zitat:
Siehe Zitat:
|
AW: [Fmx] App crasht OnScreenRotation
Zitat:
|
AW: [Fmx] App crasht OnScreenRotation
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 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