É complicado carregar bitmaps em apps Android por vários motivos:
- Os bitmaps podem esgotar o total de memória de um app com facilidade. Por exemplo, a
câmera do smartphone Pixel tira
fotos de até 4048 x 3036 pixels (12 megapixels).
Se a configuração de bitmap usada for
ARGB_8888
, o padrão para Android 2.3 (nível 9 da API) e versões mais recentes, carregar uma única foto vai ocupar cerca de 48 MB de memória (4048*3036*4 bytes). Uma demanda de memória tão grande quanto essa pode esgotar toda a memória disponível para o app. - Carregar bitmaps na linha de execução da IU pode prejudicar a performance do seu app, causando lentidão na resposta ou até mesmo em mensagens ANR. Portanto, é importante gerenciar adequadamente as linhas de execução quando for trabalhar com bitmaps.
- Caso seu app esteja carregando vários bitmaps na memória, você vai precisar gerenciar o armazenamento de cache em disco e na memória com cuidado. Caso contrário, a capacidade de resposta e a fluidez da IU do seu app podem ser afetadas.
Na maioria dos casos, recomendamos que você use a biblioteca Glide para buscar, decodificar e mostrar bitmaps no seu app. A Glide abstrai a maior parte da complexidade no processamento dessas e outras tarefas relacionadas ao trabalho com bitmaps e outras imagens no Android. Para saber mais sobre como usar e fazer o download do Glide, visite o repositório Glide (link em inglês) no GitHub.
Você também pode trabalhar diretamente com as APIs de nível inferior integradas no framework do Android. Para saber mais sobre como fazer isso, consulte Como carregar bitmaps grandes de maneira eficiente, Como armazenar bitmaps em cache e Como gerenciar a memória de bitmap.
Mais recursos
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