Có một số lý do khiến việc tải bitmap trong ứng dụng Android của bạn gặp khó khăn:
- Bitmaps có thể dễ dàng làm cạn kiệt ngân sách bộ nhớ của ứng dụng. Chẳng hạn như máy ảnh trên điện thoại Pixel chụp ảnh lên đến 4048x3036 pixel (12 megapixel).
Nếu cấu hình bitmap được sử dụng là
ARGB_8888
, mặc định cho Android 2.3 (API cấp 9) trở lên, việc tải một ảnh vào bộ nhớ sẽ chiếm khoảng 48 MB bộ nhớ (4048*3036*4 byte). Nhu cầu bộ nhớ lớn như vậy có thể ngay lập tức sử dụng hết bộ nhớ có sẵn cho ứng dụng. - Việc tải bitmap trên luồng giao diện người dùng có thể làm giảm hiệu suất của ứng dụng, gây ra tình trạng phản hồi chậm hoặc thậm chí là hiển thị thông báo ANR. Do đó, điều quan trọng là phải quản lý luồng một cách phù hợp khi làm việc với bitmap.
- Nếu ứng dụng của bạn đang tải nhiều bitmap vào bộ nhớ, bạn cần quản lý bộ nhớ đệm và bộ nhớ đệm của ổ đĩa một cách khéo léo. Nếu không, khả năng phản hồi và tính linh hoạt của giao diện người dùng ứng dụng có thể bị ảnh hưởng.
Đối với hầu hết các trường hợp, bạn nên sử dụng thư viện Glide để tìm nạp, giải mã và hiển thị bitmap trong ứng dụng của mình. Glide tóm tắt hầu hết độ phức tạp trong việc xử lý các tác vụ này và những tác vụ khác liên quan đến việc sử dụng bitmap và các hình ảnh khác trên Android. Để biết thông tin về cách sử dụng và tải Glide, vui lòng truy cập vào Kho lưu trữ Glide trên GitHub.
Bạn cũng có thể chọn sử dụng trực tiếp các API cấp thấp hơn được tích hợp trong khung Android. Để biết thêm thông tin về cách sử dụng này, vui lòng tham khảo bài viết Tải các đối tượng Bitmap lớn một cách hiệu quả, Lưu các Bitmap vào bộ nhớ đệm và Quản lý bộ nhớ trên Bitmap.