アクティビティに 1000 個を超えるボタンがあるプロジェクトがあります。データベースから色情報を取得した後、これらのボタンの背景色を更新しています。このプロセス全体は非常に大きなプロセスであり、アクティビティを読み込むのに 8 秒かかりました。そのために Asynctask を実装しましたが、「ビュー階層を作成した元のスレッドのみがそのビューに触れることができる」ため、問題はこの例外にあります。私の長い操作は、UI要素を更新している部分にあるためです
その後、UI要素を更新するためにUIthreadで実行されるスレッドを実装しました。これはその機能に従って正常に機能し、このスレッドは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));
}
どんな助けでも大歓迎です。ありがとう。!!