AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Android Performance Problem

Ein Thema von Peter666 · begonnen am 14. Apr 2014 · letzter Beitrag vom 15. Apr 2014
Antwort Antwort
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#1

Android Performance Problem

  Alt 14. Apr 2014, 11:15
Hi,

ich hab hier ein riesen Problem mit einem zu betreuenden Projekt. Auf meinem Entwicklungstablet (Nexus7) läuft die Anwendung akzeptabel. Die Anzeige besteht aus einer eigenen Komponente und einerm Listview, sowie 4 Comboboxen und einem Button. Bei der Präsentation beim Kunden wurde mir allerdings schlecht. Der nutzt ein aktuelles Tablet Z von Sony und dort läuft das ganze unter aller Sau. Freundlich ausgedrückt mit einer Performance die geht überhaupt nicht.
Das Backend ist Gottseihdank unabhängig von der Anzeige und so ist der Aufwand das ganze Nativ zu gestalten hoffentlich übersichtlich. Meine Frage ist ob jemand mit der DPF Android Komponente Erfahrungen gesammelt hat? Ich finde da keine Combobox und gerade bekomme ich gefühlt nen halben Herzkasper da das Projekt eigentlich schon im März hätte fertig sein müssen. Der Kunde hat sich nur erst heute gemeldet und da ich eigentlich der Meinung war das ganze ist abgeschlossen hab ich die Zeit für andere Projekte verwendet
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Android Performance Problem

  Alt 14. Apr 2014, 11:22
Unter Android heisst das Control Spinner. Der Wrapper von DPF nennt sich deshalb TDPFJSpinner
Markus Kinzler
  Mit Zitat antworten Zitat
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#3

AW: Android Performance Problem

  Alt 14. Apr 2014, 11:53
Ah danke, ich hab mal grob das Design nachgebaut. Das wirkt jetzt ziemlich bunt im Vergleich du dem schwarzen Kitkat Style. Wenigstens weiß ich nun das das ganze zumindest mit halbwegs überschaubaren Aufwand machbar ist.
  Mit Zitat antworten Zitat
CHackbart

Registriert seit: 22. Okt 2012
260 Beiträge
 
#4

AW: Android Performance Problem

  Alt 15. Apr 2014, 09:41
Echt so schlimm? Ich hab die Erfahrung gemacht das man im ungünstigen Fall die Performance von FM zumindest unter Android extrem in den Keller ziehen kann. Android zwingt einen die Applikation von der UI zu trennen. Also alles was nicht in ein paar Millisekunden berechnet werden kann, sollte man in einen Extra Thread packen. Ansonsten kommt nach 5 Sekunden die "Applikation reagiert nicht" Anzeige.
Man sollte beachten das bei jeder Änderung die komplette Anzeige neu berechnet wird und FillText ist nicht wirklich schnell. Bei einigen Geräten scheint außerdem das Verwenden von Farbverläufen nicht zu gehen (oder aber ich hab in meiner Klasse Murx gemacht, was auch sein kann). Der Screenshot im Anhang zeigt das Problem:

Delphi-Quellcode:
 Canvas.Fill.Kind := TBrushKind.bkGradient;
 Canvas.Fill.Gradient.Color := (GlossAlpha and $FF) shl 24 or $FFFFFF;
 Canvas.Fill.Gradient.Color1 := $00FFFFFF;

 X := R.Left + (Width * 0.10);
 Y := R.Top + (Width * 0.07);
 Canvas.FillEllipse(RectF(X, Y, X + (Width * 0.80), Y + (Width * 0.7)), 1);

 Canvas.Fill.Gradient.Color := $00FFFFFF;
 Canvas.Fill.Gradient.Color1 := ((GlossAlpha div 3) and $FF) shl 24 or
      FBackColor and $FFFFFF;

 X := R.Left + Width * 0.25;
 Y := R.Top + Width * 0.77;
Canvas.FillEllipse(RectF(X, Y, X + Width * 0.5, Y + Width * 0.2), 1);
GlossAlpha ist ein Bytewert und FBackcolor die Hintergrundfarbe in der unteren Ellipse. Ich habe keine Ahnung warum sich das Rot verfärbt.
Was unter iOS super läuft zuckelte Anfangs in Android vor sich hin und ich war auch extrem nah dran die nativen DPF Routinen zu verwenden.
Übrigens waren die beiden Gauges der Performancekiller wie sich herausgestellt hat. Ich rendere diese jetzt in eine Bitmap wenn sich der
anzuzeigende Wert verändert und zeichne die Bitmap und nicht die komplette Anzeige. Die Komponente kann ich bei Bedarf gerne zur
Verfügung stellen.
Damit die Anzeige auf dem Zielgerät nicht zu verwaschen aussieht muss man die Bitmap übrigens skalieren. Den dazugehörigen Wert bekommt man via:
  if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService,IInterface(ScreenSvc)) then FScale := ScreenSvc.GetScreenScale
Miniaturansicht angehängter Grafiken
screenshot_2014-04-14-14-55-19.jpg  

Geändert von CHackbart (15. Apr 2014 um 09:52 Uhr)
  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 20:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz