我为Android开发了一款App。我的问题是该应用程序在华为Honor 7上崩溃,但在三星Galaxy S3 mini,Galaxy S4,Galaxy S6,Nexus 4和Nexus 5上工作正常。
我在清单中的应用程序标记中设置了这一行:
Throwing OutOfMemoryError "Failed to allocate a 31806012 byte allocation with 4194304 free bytes and 24MB until OOM"
但是这个错误出现在华为的logcat中:
Runtime rt = Runtime.getRuntime();
long maxMemory = rt.maxMemory();
Log.v("onCreate", "maxMemory:" + Long.toString(maxMemory));
我在我的S4和华为上测试maxMemory并得到这个值: Galaxy S4:192MB 华为荣耀7:256MB
要获取值,我使用此代码:
{{1}}
我想知道这些价值观是什么意思。因为上面的错误表明设备上只有大约4MB。
我现在的2个问题如下:
maxMemory代表什么?错误中的4 MB是什么意思?
Facebook等应用如何查看这么多图片?我可以滚动,滚动和滚动,然后在应用程序中加载300图像。但在我的应用程序中,我只能显示一些图像,直到它崩溃?
谢谢!
答案 0 :(得分:0)
31806012字节= 31.806012 mb 4194304字节= 4.194304 mb
1)从我的理解应用程序所需的内存是31mb 但该设备目前只有4mb的剩余24+内存 内存不足,所以它崩溃了。
2)facebook找到快速滚动的解决方案并按照
加载更多图像a)减少垃圾收集
b)编写自定义事件总线
c)将照片移动到原生堆
d)编写自定义ListView Recycler
希望它有所帮助。