【问题标题】:android addView in background thread后台线程中的android addView
【发布时间】:2013-09-25 19:49:53
【问题描述】:

我需要在一个循环中添加很多视图,虽然这个片段会这样做,但应用程序还将有一个导航抽屉和操作栏,用户可以在其中执行操作。

所以我希望这个过程不要 a) 通过阻止用户来减慢应用程序的速度,b) 最好在后台线程中添加视图。

困境是我认为android不喜欢在非UI线程中添加视图,那么有没有最佳实践呢?我计划在片段视图中显示一个进度条视图对象,同时使用 addView 和相关计算生成其余视图

【问题讨论】:

  • 你能详细说明你在做什么吗?即,您要添加什么样的视图?我的猜测是一些adapterview变体会起作用。
  • "是否有最佳实践?" -- 首先没有“很多观点”。

标签: android views ui-thread background-thread


【解决方案1】:

您可以通过在 UI 线程上发布多个 Runnables 来分配工作,而不是在后台线程上添加视图。下面的代码是该技术的高度简化版本,但它与在 Android 的 Launcher 应用中的实现方式相似:

private void createAndAddViews(int count) {
    for (int i = 0; i < count; i++) {
         // create new views and add them
    }
}

Runnable r = new Runnable() {
    public void run() {
        createAndAddViews(4); // add 4 views
        if (mMoreViewsToAdd) mTopLevelView.post(this);
    }
};

mTopLevelView.post(r);

【讨论】:

  • 我不明白,先生。 . .我有 5 个 LinearLayouts 来填充很多项目。如何添加不会使我的 ProgressBar 在可运行对象完成之前可见的视图以不滞后。
  • 绘制复杂 UI 的好方法。
猜你喜欢
  • 2016-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
相关资源
最近更新 更多