我有一个Android应用程序,这个应用程序连接到服务器下载图像,但这个图像有多个副本,第一个复制1600 * 1080像素,第二个是800 * 540 ... 因此设备应该将标签发送到服务器以下载该设备的良好图像 我使用了很多方法来检查设备内存或密度,但结果不够明确,无法做出决定,这里使用了一些代码:
float density = getResources().getDisplayMetrics().density;
long mem = Runtime.getRuntime().freeMemory();
long heap = Debug.getNativeHeapAllocatedSize();
结果是针对3个这样的设备:
samsumg标签10英寸= 1.0 , 745464 , 3249552 byte
中国标签7英寸= 1.0 , 559944 , 2789016 byte
htc moble 3.4英寸= 1.5 , 1760904 , 8942736 byte
结果显示htc更好但不是因为我无法查看最高分辨率,但在其他设备上它非常好 错误消息: java.lang.OutOfMemoryError:位图大小超过VM预算(堆大小= 7687KB,分配= 3356KB,位图大小= 25092KB)
这个问题有什么帮助吗?
答案 0 :(得分:0)
您的决定应取决于两个因素:
在你的情况下,你已经在htc上收到了hdpi drawables,但它是小型设备,因此不需要在小型设备上显示包含更多细节的大图像。
有关有效加载大位图的更多信息:
http://developer.android.com/training/displaying-bitmaps/load-bitmap.html