我需要在一个循环中添加很多视图,虽然这个片段会这样做,但该应用程序还将有一个导航抽屉和操作栏,用户可以在其中执行操作。
所以我希望这个过程不要a)通过阻止用户来减慢应用程序的速度,b)最好在后台线程中添加视图。
困境是我认为android不喜欢在非UI线程中添加视图,那么有没有最佳实践呢?我计划在片段视图中显示一个进度条视图对象,同时使用 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);