我在创建OutOfMemoryException
时遇到意外发生Bitmap
的游戏。
对于某些资源,我只在drawable
文件夹中使用一个图像( MDPI )。这意味着 HDPI , XHDPI 或 XXHDPI 没有单独的图片。
Android会自动向上扩展它们。
我的问题是:如果我在游戏中放入最初为每个单独分辨率放大的图像,那么记忆效率是否更高 - 例如 HDPI 的图片, XHDPI 的图片,让Android无需转换并重新调整内存中的Bitmap
,或者使用单曲更好更高效仅针对 MDPI 和Android进行重新缩放的图片。
我认为在那个方向上,因为我不知道Android内部需要多少内存才能在创建位图时重新缩放图像,并且在每种情况下Bitmap内存都会更大或更小。但这似乎是一种可能的选择。
答案 0 :(得分:1)
您可以在drawable-nodpi中使用您的图像,因此不会根据不同的密度进行缩放。 当Android将图像缩放到dencity手机时,手机正在使用内存,再次缩放图像后,您正在使用更多内存,并将抛出OutOfMemoryException。
你会把:
android:largeHeap="true"
例如:
<application
android:icon="@drawable/icon"
android:theme="@style/TecnoblindsTHEME"
android:largeHeap="true"
tools:replace="android:icon,android:theme"
android:label="@string/app_name"
>
检查显示位图优化:
http://developer.android.com/training/displaying-bitmaps/index.html
答案 1 :(得分:1)
在效率和性能方面,提供缩放图像几乎总是更好的主意,而不是让Android为您完成。
话虽如此:在Android中 - 自动缩放而不是预缩放可能会使CPU更加昂贵,但占用的内存更少。除非你不在同一个会话中改变图像的比例,否则它应该不是问题。