![]() |
iOS App in TestFlight gibt out of memory Fehler auf iPhone
Hallo zusammen,
ich Teste mit Rad XE8 Pro und XCode6.3.2 eine App im AppStore. - Debug: funkltioniert direkt auf dem Gerät super - Testflight: Bei verschiedenen Testern habe ich das out of memory aufpoppen sehen. Also da geht es wohl um RAM. Habe mit dem Tool SystemActivityMonitor auf den betreffenden Phones getestet, es war aber immer noch freier Speicher da. Könnte das an Testflight liegen, denn sonst sehe ich keinen besonderen Unterschied zu den Phones (natürlich 5S und 6, verschiedene Modelle). Aber Systool zeigt eigentlich immer Speicher an. In den Apple Docs finde ich das iOS keinen Speicher auslagert (wenn ich das richtig verstehe), stattdessen sendet das System eine Message an die App und erwartet Kooperation. ![]() ![]() Dazu müsste die App auf eines der folgenden Ereignisse reagieren: Zitat:
Vielleicht hat ja schonmal jemand damit Erfahrungen gamacht. Rollo |
AW: iOS App in TestFlight gibt out of memory Fehler auf iPhone
Hallo zusammen,
ich habe auf iOS 8.3 die AppEvents wie folgt abgefangen, insbesondere das LowMemory Event:
Code:
es sollten beim Debug-Modus alle Log-Mesages in dem Logger angezeigt werden, auch die LowMemory.
function TFormMain.EvOnAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean;
var iDo : Integer; begin Result := True; case AAppEvent of TApplicationEvent.FinishedLaunching : begin {$IFDEF _X_USE_DEBUG} DoLogDebugInfo('OnFinished launching'); {$ENDIF _X_USE_DEBUG} end; // Ihre Anwendung wurde aufgerufen. TApplicationEvent.BecameActive : begin {$IFDEF _X_USE_DEBUG} DoLogDebugInfo('OnBecameActive'); {$ENDIF _X_USE_DEBUG} end; // Ihre Anwendung hat den Fokus erhalten. TApplicationEvent.WillBecomeInactive : begin {$IFDEF _X_USE_DEBUG} DoLogDebugInfo('OnWillBecomeInactive'); {$ENDIF _X_USE_DEBUG} end; // Ihre Anwendung verliert gerade den Fokus. TApplicationEvent.EnteredBackground : begin {$IFDEF _X_USE_DEBUG} DoLogDebugInfo('OnEnteredBackgound'); {$ENDIF _X_USE_DEBUG} end; // Der Benutzer verwendet die Anwendung nicht mehr, aber Ihre Anwendung wird noch im Hintergrund ausgeführt. TApplicationEvent.WillBecomeForeground: begin {$IFDEF _X_USE_DEBUG} DoLogDebugInfo('OnWillBecomeForeground'); {$ENDIF _X_USE_DEBUG} end; // Der Benutzer verwendet Ihre Anwendung jetzt, die sich zuvor im Hintergrund befunden hat. TApplicationEvent.WillTerminate : begin // Der Benutzer beendet Ihre Anwendung. iDo := 0; {$IFDEF _X_USE_DEBUG} DoLogDebugInfo('OnWillTerminate'); {$ENDIF _X_USE_DEBUG} end; TApplicationEvent.LowMemory : begin // Must Cleanup iDo := 1; if Assigned(FFrmGroundplan) and (TabControlMain.ActiveTab = TabItemViewGroundPlan) then begin TabControlMain.ActiveTab := TabItemViewProjects; end; if Assigned(FFrmSketchPlan) and (TabControlMain.ActiveTab = TabItemViewSketch) then begin TabControlMain.ActiveTab := TabItemViewProjects; end; if Assigned(FFrmImagePlan) and (TabControlMain.ActiveTab = TabItemViewImage) then begin TabControlMain.ActiveTab := TabItemViewProjects; end; {$IFDEF _X_USE_DEBUG} DoLogDebugInfo('Low memory handled'); {$ENDIF _X_USE_DEBUG} end; TApplicationEvent.TimeChange : ; // Die Zeit wurde signifikant geändert. // Dieses Ereignis kann beispielsweise beim Tageswechsel oder beim Wechseln in oder aus der Sommerzeit auftreten. TApplicationEvent.OpenURL : ; // Ihre Anwendung hat eine Anforderung zum Öffnen eines URL empfangen. // Anwendungsereignisse dieses Typs sind normalerweise einem Kontext zugeordnet. // Dieser Kontext ist eine Instanz der iOS-spezifischen Klasse TiOSOpenApplicationContext, die die folgenden schreibgeschützten Eigenschaften bereitstellt: // TiOSOpenApplicationContext.SourceApp ist ein String, der die Bundle-ID der Anwendung enthält, von der Ihre Anwendung die Anforderung zum Öffnen des URL erhalten hat. // TiOSOpenApplicationContext.URL ist der zu öffnende URL, entweder eine Netzwerkressource oder eine Datei. // TiOSOpenApplicationContext.Context ist ein Zeiger auf ein Eigenschaftslistenobjekt, das gegebenenfalls zusätzliche Informationen bereitstellen kann. // In der iOS API reference documentation finden Sie weitere Informationen. end; end; Die echte LowMemory sollte dann eigentlich nicht, zumindest nicht sofort, kommen. Die AppEvents funktionieren auch wirklich, weil die Messages im Logger ankommen und angezeigt werden. Aber ich bekomme auf manchen (nicht allen) Testgeräten trotzdem eine LowMemory-Meldung vom System, diese sind dann auch nicht in den Logs eingetragen, obwohl z.B. "OnBecameActive" als letztes drinsteht. Es scheint also das die AppEvents auf manchen Geräten "umgangen" werden kann. (und ich rede hier von iPhone 5S und 6 Plus, also keine allzu alten Brötchen). Hat das schonmal jemand gesehen, und vielleicht einen Tip für mich ? Rollo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 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