Android 如何在不降低图像质量的情况下解决内存不足 (OOM) 错误

How to solve out of memory (OOM) error without reducing image quality in Android

我正在开发一个具有包含图像按钮的滚动视图的游戏(不是从服务器使用可绘制的图像),我遇到了 Out Of Memory 错误并处理 OOM 我提到的错误answer,其中图像被缩小以减少内存,但这在很大程度上降低了我的图像质量,

所以我的问题是,如何在不降低图像质量的情况下解决 Android 应用程序的 OOM 问题?

使用库在您的应用程序中加载图像。 喜欢Picaso or Glide

另请阅读它们之间的区别here

希望这能解决您的问题。

如果要在列表中显示多个实体,最佳做法是使用RecyclerViewclass。

RecyclerView 的适配器 class:RecyclerView.Adapter 正在使用 ViewHolder 模式,它会在用户滚动列表时回收不可见的视图。这是一种避免OOM的方法,也是Android开发中非常常用的方法。

Example here.

使用 "plain old" ListView 与您自己编写的适配器的其他方式,但那样您必须自己实现 ViewHolder 模式。顺便说一句,互联网上有很多教程。

ScrollView 更像是 显示恒定数量的实体 的视图,比显示许多数据实例更像是应用程序的内容.它是使屏幕可滚动的主要 View,但不是 "browsable"。我希望我在这一点上的解释是清楚的。

关于图像:如果您下载图像并且它们不是简单的可绘制资源,您可以使用一些使用缓存的图像下载器class。一个好的解决方案是:Picasso.