Recycler View 在它的主框架上做太多的工作

Recycler View Too much work on its main frame

我的 MainActivity 中有一个 recyclerView。它有 12 个带有图像的项目。

我的问题是,当我启动应用程序时,它非常慢,而且我总是收到错误消息:

I/Choreographer: Skipped 52 frames! The application may be doing too much work on its main thread.

但是当我从 recyclerView 中删除图像时一切正常。

这样做的目的是什么,或者当我对图像执行此操作时,我该怎么做才能使应用程序不那么慢。我只有大约 30 个条目。

真诚的丹尼尔

正如您所说,删除图像解决了您的问题,只需调整可绘制图像和图标的大小即可。尝试最小化分辨率并保留应用程序所需的那些图像和图标。另一种方法是使用多线程编码。阅读 Java 线程和异步任务,了解有关多线程的更多详细信息。

如果不深入了解您的代码,就不可能直接确定您 运行 遇到的问题...这是一个广泛的性能问题,可能是任何事情累积的原因。

也就是说,这里有一些事情需要研究:

  1. 调整资源大小并针对每个屏幕密度适当缩放它们:https://developer.android.com/guide/practices/screens_support.html

  2. 如果您还没有,请为您的 RecyclerView 使用 ViewHolder 设计模式:https://developer.android.com/training/material/lists-cards.html

  3. 优化您的位图加载(从 UI 线程处理位图是解决您的问题的良好起点):https://developer.android.com/training/displaying-bitmaps/index.html

您的代码存在根本问题,即 运行 在主线程上处理密集型任务,您应该 运行 在后台线程中处理此类进程,即 Asynctask。使用 Image Library Picasso 还可以提高应用程序的整体性能。如有疑问请post代码

我认为,您的应用程序存在内存泄漏。

请使用https://github.com/square/leakcanary检查是否有泄漏。