This bitmap is huge . You mentioned 500 thousand. This is a compressed size. Images are uncompressed in memory when you use them. You are really looking at 2048 × 1536 × 4 = 12582912 = more than 12 MB of memory usage.
If you are on a device such as the Nexus 9 that has such a screen resolution, then you can assume that it also has memory, a graphics processor, and bus bandwidth to process an image of this size. However, if you use a device with a lower resolution (most devices, remember that even Full HD is only 65%), then this image is phenomenally wasteful for memory. Today you can buy low-resolution devices with a 240x320 screen, where a full-screen raster image is only 2.5% of the size of your image.
You will have to scale this image when downloading it. Use BitmapFactory.Options to set the desired size before loading the image.
In addition, you place text directly on top of it. Rendering text requires alpha transparency, which requires fetching the main image. If you can put text on an opaque background and place it on top, you will also save the load on the GPU, but I'm not really sure how much performance you are going to get. It may not be so much.
Barend
source share