我正在尝试创建一个带有显示两个ImageButton的片段的应用。这些代码通过xml加载图像:
<ImageButton
...
android:id="@+id/image_button_lab"
android:background="@drawable/lab"
.../>
和
<ImageButton
...
android:id="@+id/image_button_wild"
android:background="@drawable/wild"
.../>
第一个是实验室的照片,另一个是老虎的照片。这两张照片都是1080 x 1080平方.jpeg图片。
当我运行应用程序并启动此片段时,我收到以下错误(缩短了)
E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.example.umutberk.test,PID: 2959
java.lang.OutOfMemoryError: Failed to allocate a 41990412 byte allocation with 4194304
free bytes and 22MB until OOM
我尝试过添加;
dexOptions
{
incremental true
javaMaxHeapSize "4g"
}
...到build.gradle文件中的android {...}段。
还尝试将VD RAM大小增加到4GB,创建一个具有4GB RAM分配的新VD,同时在我的LG G4上运行APK,无论如何都会崩溃。
查看&#34;有效加载大位图&#34;官方Android Studio文档和moethod中的教程并不是我想要做的。我只是想加载&#34; @drawable /&#34;作为我的ImageButtons的背景。任何帮助将不胜感激!
(PS:当我改变&#34; @ drawable / image&#34; to#34; #ffffff&#34;对于android:background。它确实有用这两个图像。)
此处还有完整的错误消息:http://pastebin.com/ZiegMfpB
答案 0 :(得分:1)
问题不在于这些特定的分配。这个尺寸的2张图像是半合理的(因为2张图片大不会同时放在屏幕上,所以为什么不根据需要一次加载一张)。问题是你所有的分配都太多了。寻找您不需要保留的泄漏或记忆 - 尤其是位图。我会使用堆转储来查看是否有太多的对象。
此外,将RAM增加到4GB也行不通 - 整个设备没有4GB。这些是手机,而不是电脑(地狱电脑4年前还没有电脑)。