1. 程式人生 > >Android線上程裡更新UI介面

Android線上程裡更新UI介面

在Android裡,不允許線上程裡更新UI介面,那麼當我們要更新UI介面的時候,我們要用到Handler

例子:

這裡我們在按鈕裡開啟了一個執行緒,用來動態更新文字框裡的值,然後我們執行來看一下

報錯:

Only the original thread that created a view hierarchy can touch its views(字面意思是隻有建立檢視層次結構的原始執行緒才能操作它的View,明顯是執行緒安全相關的)

原因:我們不能再子執行緒中更新主執行緒

所以:我們要在子執行緒中更新主執行緒的時候,我們要用Handler

我們可以在單擊按鈕後傳送一個handler

然後在handler裡處理髮送的訊息

程式碼:

先在頭部定義一個

final Handler handler=new Handler(){     @Override     public void handleMessage(Message msg) {         super.handleMessage(msg);         if(msg.what==0){             map.put("image", imageList);             map.put("title", titleList);            Log.i("zjc",

"裡面:" + String.valueOf(map.size()));             homeView.showBanners(map);        }    }};

然後線上程裡傳送訊息

handler.sendEmptyMessage(0);

然後就可以了更行ui介面了

還有一種方法就是線上程的run方法裡呼叫handler.post方法

handler.post(new Runnable() {     @Override     public void run() {         textView.setText(更新你的ui介面);     }

 });