在Android中重新加载数据后如何更新UI

时间:2019-03-08 20:27:41

标签: android performance

我想更新UI以在Android中显示一些更新的数组数据。数组数据的计算有时会花费很长时间。

在完全完成更新后,UI应代表数据。这是我尝试的代码:

Handler handler = new Handler();
Runnable r = new Runnable() {
   @Override
   public void run() {

       // Reload page data
       pageReloadData();

       handler.post(new Runnable() {
           public void run() {

               // UI update
               if (data != null){
                    expandableListViewReload();
               }
           }
       });
   }
};
Thread t = new Thread(r);
t.start();

但是它不能正常工作。有人帮我!

1 个答案:

答案 0 :(得分:0)

问题是您需要在UI线程上运行UI更改,而不是刚创建的线程。

您可以使用runOnUiThread完成此操作。

Handler handler = new Handler();
Runnable r = new Runnable() {
   @Override
   public void run() {

       // Reload page data
       pageReloadData();

       runOnUiThread(new Runnable() {
           public void run() {
               //Do something on UiThread
               // UI update 
               if (data != null){
                    expandableListViewReload();
               }
           }
       });
   }
};
Thread t = new Thread(r);
t.start();