Reputation: 457
I'm android developer from Korea
My project has features about loading large amount of huge bitmap (about 2,000 x 1,500px)
I had a some experiments to compare time complexity and space complexity between Asset and Drawable
By result, Asset is better than drawable in space complexity.
When I load huge images using drawable, my app broken down with OutOfMemoryException : the bitmap size exceeds VM budget
but when I load huge images using Asset, It works fine!
Anybody know reason why this happened?
or Anybody know about how Drawable works in Android framework? step-by-step.
Please help.
Thank you for reading.
Upvotes: 4
Views: 3445
Reputation: 1393
If you are passing an asset Uri
to something like an ImageView
, the framework will use BitmapFactory
to stream a downsampled version of the image from disk. This is the technique it uses under the hood.
Drawable
s do not use this technique, for performance reasons. It is not generally expected that huge images are stored as Drawable
s, and Drawable
loading happens many times over your app's lifecycle, so they are streamed from disk in their entirety and cached in memory.
Upvotes: 6