I have a published app that is crashing at startup on Android N when the newly introduced Display size
OS setting is set to too large a value.
When I look in logcat, I see the following message:
java.lang.RuntimeException: Canvas: trying to draw too large(106,975,232 bytes) bitmap.
I've traced the issue to an ImageView in my first Activity that shows a nice big background image. The image in question is 2048x1066 and is in my generic drawables
directory, so no matter the density, this image will be used.
Everything works okay when the Display size
setting is Small
. But when I go up to Default
, it stops working. If I then swap the image out with a smaller one, it works at Default
, but if I go up to Large
, it stops working again.
My guess is that adjusting Display size
up causes your device to behave like a physically smaller device with a higher pixel density. But I don't understand what I'm supposed to do here. If I put in progressively smaller images for progressively higher resolutions, it won't look good on actually large displays. Or am I not understanding something?
Any pointers would be greatly appreciated.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…