【发布时间】:2014-05-04 15:08:28
【问题描述】:
我一直在编写这个显示公交线路时刻表图像的应用程序。目前有 32 行,每行都有自己的图像(由于格式和数据不足,无法使用文本,不得不妥协)。我让它从我服务器上的 PHP 文件中获取回显,并检索有关总线线路及其图像的数据,然后将这些数据和图像下载到内部存储并加载每条线路的按钮(动态布局)。
ImageViews 在创建时设置为 null,并且仅在单击按钮后才会填充。我注意到我的应用在启动时使用了大约 20MB 的 RAM。打开 10-15 行(10-15 图像加载到 ImageViews),RAM 使用量攀升至 60MB,然后崩溃(达到我设备的堆大小限制)。我知道图像密集型应用程序倾向于使用大量 RAM,我的计划是将其限制为每次仅一张图像(因此,一旦用户单击其他总线,其他总线将关闭,并且它们的图像视图设置回 null ),但我想知道的是,空的 ImageViews 会导致 RAM 大约为 20MB 吗?我的图像宽度为 320 像素,高度为 200 到 1500 像素(我知道,这很多),但我已将它们设置为灰度并对其进行压缩(图像大小从 50kb 到 150kb)。
我的应用程序的 APK 大小为 710kb,安装后的应用程序约为 3MB,数据总计为 7.5MB。
所以,澄清一下,我的问题是:
*1) 空的 ImageView 也会导致高 RAM 使用吗?
2) 如果是,我是否应该在用户单击按钮时动态创建一个 ImageView 并填充它,而不是在启动时创建它们时的当前方法?
3) 多维变量(主要是字符串,35 维的 6 个字符串)是否也会导致 RAM 使用率过高?其中大多数长度约为 10 个字符。
4) 我可以在 Android Studio 上使用任何工具来帮助我定位可能的内存泄漏吗?
5) 非全局变量是否会在 ie.函数返回了一个值,还是我需要在完成它们后手动将它们设置为 null?
6) 在开发应用程序时,通常有哪些好的做法可以减少 Android 上的 RAM 使用量?*
抱歉,这里的技术不是很专业,我不是专业程序员或其他任何东西,这更多是我的爱好,我正在尝试在这里学习更多。感谢您的阅读。
显示我的应用功能的图片:
所有公交线路都折叠了
点击按钮后,会显示该线路的公交时刻表
【问题讨论】:
标签: android image memory memory-leaks ram