android addView在后台线程
问题描述:
我需要在循环中添加大量视图,而这个片段可以做到这一点,应用程序还将有一个导航抽屉和操作栏,用户可以在其中进行操作。android addView在后台线程
所以我想这个过程不要a)通过阻止用户减慢应用程序,b)最好在后台线程中添加视图。
困境是,我认为Android不喜欢在非UI线程中添加视图,那么是否有最佳做法呢?我打算在片段的视图中显示进度栏视图对象,其余视图正在使用addView和关联计算生成。
答
而不是在后台线程上添加视图,您可以通过发布几个Runnables
在UI线程上。下面的代码是该技术的一个高度简化的版本,但它类似于它在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);
+2
我不明白。 。 。我有5个LinearLayouts来填充大量的项目..我如何添加视图不会使我的ProgressBar在可运行完成之前可见,而不会滞后。 – Sheychan
你能详细说明你在做什么吗?即你正在添加什么样的观点?我的猜测是一些adapterview变体会起作用。 – JoeyG
“是否有最佳做法?” - 首先没有“很多观点”。 – CommonsWare