将超过20个片段添加到Backstack时,App速度降低

时间:2018-08-10 06:30:08

标签: android

我有一个片段,可将选项卡动态加载到视图分页器中,其中每个选项卡中的数据将根据api调用的结果加载。每个片段至少有4个标签。当将此片段多次(通常超过20次)添加到Backstack中时,应用程序开始滞后,滚动列表的速度变得非常慢。有办法解决吗?

1 个答案:

答案 0 :(得分:1)

此问题与管理 UI Thread & Worker Thread 有关。

也许您在UI Thread中做了很多工作。就像过滤列表或创建Map(可以是任何东西,我看不到您的代码。)等等。

解决方案:

您仅应在UIMain thread中进行UI工作。就像您要获取和解析响应一样。

  • Worker Thread AsyncTask()new Handler())中获取api数据。
  • 解析工作线程中的数据,因为解析太多数据将导致UI滞后。
  • 过滤列表或在同一工作线程中准备数据。
  • 然后使用 runOnUiThread(); List中设置数据或设置视图组件。
  • 如果每个片段中都有很长的列表,请使用 Pagination

您的代码中可能还有许多其他改进。您应该确定并解决这个问题。

关键点是使用UI /主线程与View通信。并使用Worker Thread进行后台处理。

如果您正确管理应用程序中的线程,则您的应用程序将永远不会挂起。