Benutzer mit den meisten Antworten
Problem mit Samsung-Handy

Frage
-
Hallo Leute,
ich habe eine App, die auf einem Handy (Samsung mit Android 9.0 API Ebene 28) beim Aufruf einer bestimmten Page immer
eine out of Memory exception liefert.
Am reellen Speicherbedarf sollte es nicht liegen, weil viel schwächer ausgestattete Handy's auch kein Problem haben.
Weiters verwende ich auch keine Images, die größer als 48x48 Pixel sind.
Alle anderen Handy's (Samsung, Huawei usw.) mit kleinerer API-Ebene funktionieren auch.
Die max. Heapgröße für Java habe ich testweise auch schon in den Android-Optionen auf 2G gesetzt. Hat nichts geändert.
Woran könnte es liegen?
Vielen Dank im Voraus
Christian Tauschek
Antworten
-
Hallo Christian,
vor einigen Jahren hat ich mit einem Samsung Geräte das selbe Problem. Ich habe einfach nur 8 Bilder mit einer Auflösung von 48x48 Pixel geladen und jedes mal eine out of memory exception erhalten. Aber auch nur auf diesem einem Samsung Gerät.
Ich habe auch nach Stundenlangen debuggen keine Lösung finden können.
Ich habe es dann so gelöst das ich die Bilder erst nach Fertigstellung der View asynchron in einem try/catch block nachgeladen habe. Kamm es zur einer exception, habe ich die Bilder durch Text ersetzt oder sie einfach weggelassen.
Ich habe mich in den letzten Jahren dann auch oft mit anderen Android Entwicklern darüber unterhalten und sie konnten mir von ähnlich oder gleichen Problemen mit Samsung berichten.
Gruß Thomas
13 Millionen Schweine landen jährlich im Müll
Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings- Als Antwort markiert Christian Tauschek Samstag, 22. Juni 2019 15:34
Alle Antworten
-
Hallo Christian,
es wäre sicher hilfreich, wenn Du ein paar Details zu der betreffenden Page posten könntest. Worin unterscheidet die sich von anderen Pages, die problemlos laufen. Die entsprechende Stelle bzw. der vollständige Stacktrace sowie die exakte und vollständige Fehlermeldung wäre auch nützlich.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Hallo Stefan,
ich habe das Problem, dass ich das Handy nur einmal kurz bei mir mit den Entwickleroptionen (USB-Debugging testen konnte). Dabei habe ich auch die out of Memory exception festgestellt.
Zu dem Fehler kommt es auch nur zeitweise.
Mir steht das Handy nicht länger zur Verfügung, da es sich um ein privates handelt.
Ansonsten verteile ich die App über den Google-Playstore.
Die problematische Page beinhaltet eigentlich nichts was nicht eine andere Page auch hat.Eine ListView mit Row's, die wiederum grid's mit einem kleinem Image enthält.
Ich denke, dass das Problem nur an dieser ListView sein kann, weil die Page selbst ist nichts Besonderes. Diese enthält nur ein paar Buttons.Du findest das CellTemplate der ListView untenstehend.
Aufgefallen ist mir auch, dass dieses Handy meine App nicht mehr automatisch über den Google-Playstore aktualisiert. Ich glaube, dies ist seit dem Aktivieren der Entwickleroptionen.
mfg
Christianclass CMyListViewAufträge : CMyListView { public CMyListViewAufträge() { ItemTemplate = new DataTemplate(typeof(ListItemAuftragCell)); HasUnevenRows = true; } } class ListItemAuftragCell : ViewCell { public ListItemAuftragCell() { //Auftrag Button CMyImageButton auftragButton = new CMyImageButton { Source = "buchuhr.png", HeightRequest = 40 }; auftragButton.SetBinding(CMyImageButton.CommandProperty, new Binding(nameof(ObservableCJsonNetComClassAuftrag.CommandAuftragButton_Clicked))); auftragButton.SetBinding(CMyImageButton.CommandParameterProperty, new Binding(".")); auftragButton.SetBinding(CMyImageButton.IsVisibleProperty, nameof(ObservableCJsonNetComClassAuftrag.showAuftragButton)); //ANr CMyLabel lblANr = new CMyLabel { HorizontalOptions = LayoutOptions.Start, TextColor = Color.Black, FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(CMyLabel)) }; lblANr.SetBinding(CMyLabel.TextProperty, nameof(ObservableCJsonNetComClassAuftrag.ANr)); lblANr.SetBinding(CMyLabel.TextColorProperty, nameof(ObservableCJsonNetComClassAuftrag.ANrTextColor)); //Frame ANr CMyFrame frANr = new CMyFrame { Content = lblANr, CornerRadius = 6, Padding = new Thickness(2,0,2,0) }; frANr.SetBinding(CMyLabel.BackgroundColorProperty, nameof(ObservableCJsonNetComClassAuftrag.ANrBackgroundColor)); //Name CMyLabel lblName = new CMyLabel { HorizontalOptions = LayoutOptions.Start, TextColor = Color.Black, FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(CMyLabel)) }; lblName.SetBinding(CMyLabel.TextProperty, nameof(ObservableCJsonNetComClassAuftrag.Name)); //Beschreibung CMyLabel lblBeschreibung = new CMyLabel { HorizontalOptions = LayoutOptions.FillAndExpand, TextColor = Color.Black, FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(CMyLabel)) }; lblBeschreibung.SetBinding(CMyLabel.TextProperty, nameof(ObservableCJsonNetComClassAuftrag.Beschreibung)); CMyGrid gridANrName = new CMyGrid() //ANr, Name { HorizontalOptions = LayoutOptions.FillAndExpand, ColumnSpacing = 5, RowDefinitions = { new RowDefinition() { Height = GridLength.Auto }, new RowDefinition() { Height = GridLength.Auto } }, ColumnDefinitions = { new ColumnDefinition() { Width = GridLength.Auto }, new ColumnDefinition() } }; gridANrName.Children.Add(frANr, 0, 0); gridANrName.Children.Add(lblName, 1, 0); CMyGrid gridANrNameBeschreibung = new CMyGrid() //ANr, Name, Beschreibung { RowDefinitions = { new RowDefinition() { Height = GridLength.Auto }, new RowDefinition() { Height = GridLength.Auto } }, ColumnDefinitions = { new ColumnDefinition() } }; gridANrNameBeschreibung.Children.Add(gridANrName, 0, 0); gridANrNameBeschreibung.Children.Add(lblBeschreibung, 0, 1); CMyGrid grid = new CMyGrid() //alles { Padding = 2, ColumnSpacing = 2, RowDefinitions = { new RowDefinition() { Height = GridLength.Auto } }, ColumnDefinitions = { new ColumnDefinition { Width = auftragButton.HeightRequest }, new ColumnDefinition { Width = GridLength.Star } } }; int i = 0; grid.Children.Add(auftragButton, i++, 0); grid.Children.Add(gridANrNameBeschreibung, i++, 0); View = grid; } }
Christian Tauschek
- Bearbeitet Christian Tauschek Dienstag, 18. Juni 2019 05:39
-
Hallo Christian,
vor einigen Jahren hat ich mit einem Samsung Geräte das selbe Problem. Ich habe einfach nur 8 Bilder mit einer Auflösung von 48x48 Pixel geladen und jedes mal eine out of memory exception erhalten. Aber auch nur auf diesem einem Samsung Gerät.
Ich habe auch nach Stundenlangen debuggen keine Lösung finden können.
Ich habe es dann so gelöst das ich die Bilder erst nach Fertigstellung der View asynchron in einem try/catch block nachgeladen habe. Kamm es zur einer exception, habe ich die Bilder durch Text ersetzt oder sie einfach weggelassen.
Ich habe mich in den letzten Jahren dann auch oft mit anderen Android Entwicklern darüber unterhalten und sie konnten mir von ähnlich oder gleichen Problemen mit Samsung berichten.
Gruß Thomas
13 Millionen Schweine landen jährlich im Müll
Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings- Als Antwort markiert Christian Tauschek Samstag, 22. Juni 2019 15:34