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 线程和异步任务,了解有关多线程的更多详细信息。
如果不深入了解您的代码,就不可能直接确定您 运行 遇到的问题...这是一个广泛的性能问题,可能是任何事情累积的原因。
也就是说,这里有一些事情需要研究:
调整资源大小并针对每个屏幕密度适当缩放它们:https://developer.android.com/guide/practices/screens_support.html
如果您还没有,请为您的 RecyclerView 使用 ViewHolder 设计模式:https://developer.android.com/training/material/lists-cards.html
优化您的位图加载(从 UI 线程处理位图是解决您的问题的良好起点):https://developer.android.com/training/displaying-bitmaps/index.html
您的代码存在根本问题,即 运行 在主线程上处理密集型任务,您应该 运行 在后台线程中处理此类进程,即 Asynctask。使用 Image Library Picasso 还可以提高应用程序的整体性能。如有疑问请post代码
我认为,您的应用程序存在内存泄漏。
请使用https://github.com/square/leakcanary检查是否有泄漏。
我的 MainActivity 中有一个 recyclerView。它有 12 个带有图像的项目。
我的问题是,当我启动应用程序时,它非常慢,而且我总是收到错误消息:
I/Choreographer: Skipped 52 frames! The application may be doing too much work on its main thread.
但是当我从 recyclerView 中删除图像时一切正常。
这样做的目的是什么,或者当我对图像执行此操作时,我该怎么做才能使应用程序不那么慢。我只有大约 30 个条目。
真诚的丹尼尔
正如您所说,删除图像解决了您的问题,只需调整可绘制图像和图标的大小即可。尝试最小化分辨率并保留应用程序所需的那些图像和图标。另一种方法是使用多线程编码。阅读 Java 线程和异步任务,了解有关多线程的更多详细信息。
如果不深入了解您的代码,就不可能直接确定您 运行 遇到的问题...这是一个广泛的性能问题,可能是任何事情累积的原因。
也就是说,这里有一些事情需要研究:
调整资源大小并针对每个屏幕密度适当缩放它们:https://developer.android.com/guide/practices/screens_support.html
如果您还没有,请为您的 RecyclerView 使用 ViewHolder 设计模式:https://developer.android.com/training/material/lists-cards.html
优化您的位图加载(从 UI 线程处理位图是解决您的问题的良好起点):https://developer.android.com/training/displaying-bitmaps/index.html
您的代码存在根本问题,即 运行 在主线程上处理密集型任务,您应该 运行 在后台线程中处理此类进程,即 Asynctask。使用 Image Library Picasso 还可以提高应用程序的整体性能。如有疑问请post代码
我认为,您的应用程序存在内存泄漏。
请使用https://github.com/square/leakcanary检查是否有泄漏。