2009-08-18 9 views
7

Czy w BlackBerry lepiej używać klasy Bitmap lub EncodedImage pod względem zużycia pamięci i wydajności? Czy są jakieś konkretne wskazówki dotyczące korzystania z tych klas?Czy lepiej używać Bitmapy lub EncodedImage w BlackBerry?

+2

Jeśli Twój obraz źródłowy to w rzeczywistości png, gif, jpeg lub cokolwiek, musisz użyć EncodedImage. Po ustawieniu BitmapField możesz go utworzyć za pomocą Bitmapy lub ustawić EncodedImage później. Co ciekawe, możesz tylko ustawić to, co można ustawić podczas tworzenia, gdzie bitmapa jest wymagana. Bitmap użyje więcej pamięci (w pełni zdekodowany obraz), chyba że EncodedImage wewnętrznie również zachowa zdekodowaną kopię (nie ma pojęcia - może też zależeć od wersji JDE), ale zauważyłem, że getBitmap() jest często bardzo szybki. Prawdopodobnie będziesz musiał stworzyć własne profilowanie, aby zobaczyć w swoim dokładnym przypadku użycia ... – lilbyrdie

+1

Czy nie powinna to być odpowiedź zamiast komentarza? :) – KarolDepka

Odpowiedz

7

Moja obserwacja jest taka, że ​​lepiej:

  • bitmapy wykorzystanie i drawBitmap dla elementów, które wymagają odświeżenia często (tło ex obrazu w grach)

Może dlatego bitmapy jest format raw więc nie ma wydajność hit do dekodowania EncodedImage przed drawImage. Z drugiej strony animacja GIF działa doskonale z EncodedImage.

  • użycie EncodedImage animacji lub dla dużej ilości zasobów (zdjęć byłych lub elementów wystroju)

Podczas ładowania bitmapy z GIF, PNG, formatów jpg będą otwierane jako EncodedImage tak, a jeśli nie to wiele razy, może pokonać wydajności (ex 50 sekund, aby załadować 14 PNG z zasobów bitmapy na pogrubioną AVG wielkości 80 kb, dostrojone do 2 sekund ładowania do EncodedImages)

UPDATEstated by Fostah EncodedImage ma funkcję getBitmap(), która możesz użyć do przekonwertowania dowolnego EncodedImage do Bitmapy. Możesz więc załadować EncodedImage, a następnie użyć jako Bitmapy

Powiązane problemy