2009-08-18 18 views
7

Trong BlackBerry, tốt hơn bạn nên sử dụng lớp Bitmap hoặc EncodedImage về cách sử dụng bộ nhớ và hiệu năng? Có bất kỳ lời khuyên cụ thể nào về việc sử dụng các lớp này không?Sử dụng Bitmap hoặc EncodedImage trong BlackBerry có tốt hơn không?

+2

Nếu hình ảnh nguồn của bạn thực sự là một png, gif, jpeg, hoặc bất cứ điều gì, bạn phải sử dụng EncodedImage. Khi bạn thiết lập một BitmapField, bạn có thể tạo nó bằng một Bitmap hoặc thiết lập một EncodedImage sau này. Thật kỳ lạ, bạn chỉ có thể đặt tiêu điểm trong khi tạo, trong đó Bitmap là bắt buộc. Bitmap sẽ sử dụng nhiều bộ nhớ hơn (hình ảnh được giải mã đầy đủ) trừ khi EncodedImage nội bộ cũng giữ một bản sao được giải mã (không có ý tưởng - có thể phụ thuộc vào phiên bản JDE), nhưng tôi đã nhận thấy getBitmap() thường rất nhanh. Bạn có thể cần phải làm hồ sơ của riêng bạn để xem trong trường hợp sử dụng chính xác của bạn ... – lilbyrdie

+1

Không phải đó là một câu trả lời thay vì một bình luận? :) – KarolDepka

Trả lời

7

quan sát của tôi là tốt hơn:

  • sử dụng Bitmap và drawBitmap cho các yếu tố cần sơn lại thường (hình nền cũ trong trò chơi)

Có lẽ nó vì Bitmap là một định dạng thô vì vậy không thực hiện nhấn để giải mã EncodedImage trước drawImage. Ở phía bên kia, hoạt ảnh GIF hoạt động hoàn hảo với EncodedImage.

  • sử dụng EncodedImage cho phim hoạt hình hay cho một số lượng lớn các tài nguyên (ảnh cũ hoặc các yếu tố DECORE)

Khi bạn tải Bitmap từ gif, png, định dạng jpg họ sẽ được mở ra như một EncodedImage dù sao, và nếu bạn làm điều này nhiều lần, nó có thể đánh bại hiệu suất (ví dụ 50 giây để tải 14 png từ nguồn lực để Bitmaps trên đậm, kích thước trung bình 80 kb, điều chỉnh lên đến 2 giây nạp vào EncodedImages)

CẬP NHẬTstated by Fostah EncodedImage có hàm getBitmap() bạn có thể sử dụng để chuyển đổi mọi EncodedImage thành một Bitmap. Vì vậy, bạn có thể tải trong EncodedImage và sau đó sử dụng như Bitmap

Các vấn đề liên quan