java - 应用程序仅在 Samsung Galaxy S7 Edge 上速度缓慢并出现 OutOfMemoryException

标签 java android performance

我正在多台设备上调试我的应用程序,包括 Oppo Find 7a(Android 6.0.1、Snapdragon 801 和 2GB RAM)、Samsung Galaxy S5 mini(Android 5.1、Exynos 等和 1.5GB RAM),一台旧的三星平板电脑(Android IV.IV.I、滚轮上的仓鼠、3 颗糖果)以及刚买的三星 Galaxy S7 Edge(Android 6.0.1、Exynos 等、4GB RAM)。

我对新款 S7 和 Oppo 进行了主要比较,因为我认为具有相同的 Android 版本,它们可以被视为具有硬件升级的相同设备。

因此,我在新的三星 S7 上遇到了巨大的性能问题。不仅与 Oppo 进行比较,还与旧型号进行比较。即使是平板电脑也能轻松让S7吃灰。

此外,我正在报告 S7 上的崩溃,并出现常见的 OutOfMemoryExeption,即使他的阈值是 256MB(是 S5 Mini 的 2 倍,其中应用程序在各种条件下都能顺利运行)

我通过 Volley 大量使用 HTTP 请求,以及带有 fragment 和 viewPagers 的动态内容。

这是应用程序上次运行的日志 http://pastebin.com/EwuKZKLa

您能帮我找出为什么只有在这台设备上才会出现这些问题吗? (如果你猜的话,该设备是 100% 原装) 谢谢

最佳答案

关于堆栈跟踪,Glide 尝试使用的占位符可绘制资源太大。 Android 需要为此图像分配 132,710,412 字节。这相当于 5738 像素 x 5738 像素的图像,大于设备屏幕。

我的猜测是,您在 res/drawable/ 中有这个可绘制对象。这是 res/drawable-mdpi/ 的同义词。然后将该图像上采样到 -xxxhdpi (或 S7 Edge 的任何密度),这就是您的问题所在。创建此图像的适当密度再现,或将其移至 res/drawable-nodpi/res/drawable-anydpi/

关于“巨大的性能问题”,请使用方法跟踪和类似工具来准确确定问题所在。

关于java - 应用程序仅在 Samsung Galaxy S7 Edge 上速度缓慢并出现 OutOfMemoryException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37098783/

相关文章:

java - 如何使用另一个变量实例化一个变量?

Android Ble 在 BLE 设备上的 GATT 服务中找不到特征

php - 改善服务器响应时间

javascript - JavaScript 创建的内联样式和 JavaScript 创建的样式表之间的性能差异

java - 错误请求和超时

java - 如何使用有偏权重将 x 变量之间的总值 1 相除

java - 禁用标准错误自动刷新 (Java)

android - 何时以及为什么应该使用 getResources()?

android - 为什么不能同时使用XML的setOnClickListener和onClick属性

c# - 如何准确测量Azure Web应用程序中的 "data out"?