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.
Tài nguyên khác
How JPG Works
Understand the internals of JPG to get the most out of this file format.
VectorDrawable for smaller APKs (Android Performance Patterns Season 6 Ep. 6)
One of the interesting parts about building an Android application is all the awesome configurations of screen sizes and form factors. And if you’re a developer who prides themselves on being available on the most devices possible, then chances are
How WebP Works (lossly mode)
Learn about WebP, which can give you even smaller image sizes than JPEG.
Reducing JPG File Sizes
Keep your JPGs lean by stripping those unnecessary bits.
Smaller PNGs, and Android's AAPT tool
Use AAPT to help optimize your PNG sizes.
Reducing PNG File Size
Keep your PNGs small and lightweight.
How PNG Works
Understanding how PNGs work can help you use them correctly.
Removing unused resources (Android Performance Patterns Season 4 ep8)
Ok ok, so you’ve watched all the Android Performance Patterns videos, and you know how important it is to be diligent when it comes to bloated APKs. In fact, as soon as a layout file, or bitmap isn’t needed any more by your app, you remove it from