Android Out of Memory Error - Bitmap is too big

纵饮孤独 提交于 2019-12-25 09:28:22

问题


In my game, I have a bitmap image which functions as the games background (drawn on a canvas). The bigger the image the more "space" there is in the game for the user to move in, so I want the bitmap to be as big as possible without causing memory problems.

Well I went overboard and drew an enormous bitmap, which caused an out of memory error immediately on initialzation, so I shrunk the bitmap a bit. But I think its too small. My question is how can I measure the "safe" limit of the memory being used?

I used the following methods and read the output in CatLog:

Debug.getNativeHeapAllocatedSize();
Log.v("MEMORY",String.valueOf(Debug.getNativeHeapAllocatedSize()) );                    
Log.v("FreeMEMORY",String.valueOf(Debug.getNativeHeapFreeSize ()) );

The results of which were:

 05-25 09:53:54.044: VERBOSE/MEMORY(23044): 9715624

 05-25 09:53:54.044: VERBOSE/FreeMEMORY(23044): 61528

The free memory seems quite small? Is this cutting close to the bone?


回答1:


re size your image using sampling and store images in file in sdcard it would be better




回答2:


If you are shrinking bitmap then also first it gets loaded into memory and eventually gives you error.

You need to use something called as BitmapFactory.Options which precalulates before loading the bitmap.

Refere to this question's maximum voted answer.



来源:https://stackoverflow.com/questions/6118464/android-out-of-memory-error-bitmap-is-too-big

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!