在ActionBar选项卡中导航时,避免UI闪烁/挂起

时间:2014-08-01 13:00:21

标签: android user-interface android-fragments hang

我正在开发一款Android应用,它使用5个ActionBar标签在不同的网页/片段之间导航。

问题是,片段之间的导航导致UI挂起/闪烁。

片段的UI不是动态的,这意味着它不是使用静态控件集构建的。当片段变得可见时,应用程序开始加载相应的视图模型,例如,通过从服务器加载一组数据。加载模型后,将生成UI。因此,显示片段包括以下步骤:

  1. 显示inderminante进度条以指示正在运行的进度
  2. 启动AsyncTask以执行重载
  3. 任务完成后立即生成UI,例如为每个加载的图像插入ImageView。
  4. 隐藏进度条并显示生成的内容。
  5. 我认为使用后台线程进行加载可以避免任何UI挂起,但事实并非如此。 UI元素的创建当然必须在UI线程中完成,似乎这项工作导致UI挂起。

    即使必须创建的UI元素数量非常少(例如创建10个按钮),UI也会暂停。因此,使用其他策略(例如仅创建可见元素)不能解决问题。

    只有当没有 UI元素被创建时,片段之间的所有导航才能流畅地运行。

    我该如何解决这个问题?

    我到目前为止找到的唯一解决方案是,当片段变为可见/创建时,但是一旦创建了活动,就不会加载视图模型/生成UI。在这种情况下,我只会在加载/生成所有片段的视图模型/视图后显示活动。但这意味着要加载大量数据而不知道它是否会被使用。

    有没有更好的解决方案?动态创建UI元素并不常见,是吗?因此,必须有一种方法可以在不阻止UI的情况下完成此操作。

0 个答案:

没有答案