内存是任何软件开发环境中宝贵的资源,但在移动操作系统上,物理内存通常受限,因此它更加宝贵。对于 Android (Go 版) 中常见的原生低内存设备来说尤其如此。有几种方法可以帮助您优化应用程序的内存,使其在这些环境中流畅运行。
最佳实践
释放缓存内存
可能没有足够的内存来保持后台进程像在典型环境中那样运行。在这种情况下,您可以使用 onTrimMemory()
从应用程序进程中修剪不需要的内存。为了最好地识别应用程序的当前修剪级别,请使用 ActivityManager.getMyMemoryState(RunningAppProcessInfo)
并优化或修剪任何不必要的资源。例如,您可以修剪表达式、搜索、视图缓存或可打开扩展中不必要的内存使用情况,以减少应用程序由于内存不足而发生崩溃或 ANR 的次数。
任务调度
并发调度会导致多个内存密集型操作并行运行,从而导致对资源的竞争超过应用程序的峰值内存使用量。尝试通过将进程分离到 CPU 密集型、低延迟任务的正确 线程池 中来适当分配资源,以便在可能面临各种资源限制的设备上运行。
内存泄漏
各种工具,例如 Android Studio 中的 内存分析器 和 Perfetto,专门用于帮助查找并减少应用程序中的内存泄漏。强烈建议您使用这些工具来识别和修复潜在的内存问题,以允许应用程序的其他组件在没有对系统施加额外压力的情况下运行。
其他提示
- 大型图像或可绘制对象会消耗应用程序中的更多内存。识别并优化大型或全色位图以减少内存使用量。
- 为 Android (Go 版) 构建时,尝试为应用程序中的 GIF 选择其他选项,因为 GIF 会消耗大量内存。
- 您可以使用 WebP、pngcrush 和 pngquant 等工具减小 PNG 文件大小,而不会降低图像质量。所有这些工具都可以在保留感知图像质量的同时减小 PNG 文件大小。
- aapt 工具可以在构建过程中对放置在
res/drawable/
中的图像资源进行无损压缩优化。例如,aapt 工具可以将不需要超过 256 种颜色的真彩色 PNG 转换为具有颜色调色板的 8 位 PNG。这样做会生成质量相同但内存占用更小的图像。