我有一个项目,其中一个活动有超过 1000 个按钮。从数据库中获取颜色信息后,我正在更新这些按钮的背景颜色。这整个过程是一个非常大的过程,加载我的活动需要 8 秒。我已经为此实现了 Asynctask,但问题在于这个例外,因为“只有创建视图层次结构的原始线程才能触及它的视图”。因为我的长期操作是在我更新 UI 元素的那部分
之后我实现了一个在 UIthread 上运行以更新 ui 元素的线程,根据它的功能,这工作正常,这个线程更新了我的 ui,但它使我的应用程序卡住了 5-6 秒。然后我想在 5-6 秒内实现一个进度对话框。但是如果我在 runOnUiThread(new Runnable(){} 上实现进度对话框,它就不起作用。因为更新 ui 和进度对话框同时运行。所以进度对话框闪烁几毫秒。活动仍然与它相同以前。如果他们需要很长时间更新,我不知道用于更新 ui。
这是我的代码,我通过数据库中的 ui 元素进行更新。
for (int i = 0; i < list.size(); i++) {
Button btn = list.get(i);
Platform p = db.setplatformncolor(btn.getTag().toString());
String color = p.getColor();
if (color.equals("red")) {
btn.setBackgroundColor(Color.RED);
}
if (color.equals("green")) {
btn.setBackgroundColor(Color.rgb(0, 176, 80));
}
任何帮助表示赞赏。谢谢。!!