在回收站视图之上使用 cardview 会导致系统崩溃

using cardview on top of recycler view crashes system

为什么使用 cardview 使用大图像会导致 android 系统崩溃?我为 cardview 使用了 1280 X 600 图像,但在安装崩溃后启动应用程序时,系统会显示 logcat 中的 out of memory error

我在启动应用程序时至少有 400MB 的 RAM(使用简单的系统监视器查看),但应用程序崩溃了。 cardview 是否设计用于仅处理小图像?如果我们必须 为更大 dpi 的设备使用更大的图像怎么办? cardview 与 recycler view 一起使用,测试的 OS 是 KitKat。

我 运行 遇到了同样的问题。在 AndroidManifest.xml 中添加 android:largeHeap="true" 标签解决了我身体上的问题 Android 但我有点担心这对某些设备来说可能仍然是个问题内存更少?!?

你没有提到你想如何显示图像是卡片背景还是图像视图到卡片视图。如果您想将 ImageView 用于 CardView,则可以使用 picasso 或 glide 库来处理此问题。

在开发处理多个图像集或大型位图或某些动画内容的应用程序时,内存不足错误是非常常见的错误。在这种情况下,我们在处理图像或 object 分配和释放时必须非常小心和高效。当分配超过堆限制或您的进程需要超过堆限制的内存量时,会出现 OOM 错误。

您可能有 400 MB RAM,但所有 RAM 都不会直接提供给您的应用程序,因此应用程序会崩溃...如果您想为不同的设备使用不同的 dpi 图像,那么您可以将其添加到 drawable、drawable -mdpi、drawable-xhdpi、drawable-xxhdpi 等文件夹,以便系统可以自动 select 它们....如果您从 url 加载...那么您可以使用第三方库,例如Picasso、Glide 等高效加载图片

此外,在您的问题中,您是说您正在回收站视图中添加卡片视图...这意味着将加载多个 1280x600 图像,这将占用大量内存并使您的应用程序崩溃。

针对你的问题"Is the cardview designed to work with only small images?" 不,cardview 与您的内存不足无关...它是为您提供的图像大小和内存...card view 可以处理任何大小的图像。

Adding Adding android:largeHeap="true" to your menifest 可以在一定程度上帮助你