【问题标题】:The application may be doing too much work on its main thread. how to fixed it [duplicate]应用程序可能在其主线程上做了太多工作。如何修复它[重复]
【发布时间】:2019-02-11 07:05:29
【问题描述】:

当我从缓存中获取大量数据(以视频形式)时,应用会在长时间延迟后做出响应。我该如何解决或修复它?

【问题讨论】:

  • 在AsysncTask中做这个过程,会减少主线程的工作量。
  • 用代码描述。
  • 使用异步任务或服务执行此操作。搜索例如你会发现很多。
  • 你在 AndroidManifest.xml 文件中的应用标签中尝试过 android:largeHeap="true" 吗?
  • 这个问题太开放了,你应该在提问之前参考大量关于线程的android文档medium.com/@maheswaranapk/…

标签: java android


【解决方案1】:

在执行长时间运行或计算繁重的任务时,您应该更喜欢在后台线程上执行(即与 UI 线程分开)。

如果 UI 线程保持忙碌超过 5 秒,您将在应用程序上看到 ANR,但即使少于 5 秒,用户操作(单击、滚动)和类似消息也会有明显的滞后和延迟如您所见(Choreographer : Skipped XXX 帧!该应用程序可能在其主线程上做了太多工作。)。

在后台线程上执行此类任务的一些方法是:

此外,从后台线程更新 UI 时要小心,因为 Android UI 工具包不是线程安全的。


编辑:

对于从主线程卸载任务,您还可以使用:

【讨论】:

  • 谢谢先生,但有一件事是我的应用在使用此后台任务时运行良好,但数据显示很少下注时间现在快速显示。
  • 是否有可能应用显示数据很少赌注并且当我向下滚动数据获取时。
  • 对于这样的行为,您必须实现诸如分页、延迟加载、Android 的分页库等
  • 如何使用分页或延迟加载android任何想法先生?
  • 为了实现分页或延迟加载,您可以执行以下操作 - 假设在启动时,您的屏幕显示 20 个项目,那么您应该首先获取大约 30 个项目,然后继续获取更多项目。您可以根据您的使用情况设置在启动和后续提取时要提取的记录数。
猜你喜欢
  • 2014-06-23
  • 2013-07-01
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多