欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Android UI更新的幾種方法

 更新時間:2017年06月17日 14:10:39   作者:心若冰清_  
本篇文章主要介紹了Android UI更新的幾種方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

在android開發(fā)中,界面UI的更新都是在主線程來完成的。線程分為主線程(Main Thread,簡稱MT)和工作線程(Work Thread,簡稱WT),我們通常會在WT中執(zhí)行一些比較耗時的操作,比如下載,網(wǎng)絡,緩存等,然后在將結(jié)果發(fā)送給MT進行UI的更新操作。如果是在WT進行UI的更新,則會拋出異常,android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.(只有創(chuàng)建這個View的原始線程才能修改這個view)。

在BT搜索、WIFI搜索、其他需要更新View的UI過程中,很多是采用廣播的方式通知搜索的結(jié)果,實時的顯示到listview中進行UI的更新操作。通常會使用以下幾種方式進行UI的更新:handler,runOnUiThread,子線程發(fā)送Message。

一、Activity.runOnUiThread

利用Activity.runOnUiThread(Runnable)把更新ui的代碼創(chuàng)建在Runnable中,然后在需要更新 ui時,把這個Runnable對象傳給Activity.runOnUiThread(Runnable)。這樣Runnable對像就能在ui程序中被調(diào)用。如果當前線程是UI線程,那么行動是立即執(zhí)行。如果當前線程不是UI線程,操作是發(fā)布到事件隊列的UI線程。

mActivity.runOnUiThread(new Runnable() {
  @Override
  public void run() {
    Log.e(TAG, "開始添加設備!");
    addDevice(device);
  }
});

二、handler.post(Runnable)

handler.post(new Runnable() {
  @Override
  public void run() {
    addDevice(device);
  }
});

三、子線程發(fā)送Message

首先在需要執(zhí)行更新的位置添加以下代碼

new Thread(new Runnable() {
  @Override
  public void run() {
    //Message msg = new Message();
    //msg.what = 0x06;
    //handler.sendMessage(msg);
    handler.sendEmptyMessage(0x06);
  }
}).start();

然后進入handler下進行處理

final Handler handler = new Handler() {
  @Override
  public void handleMessage(Message msg) {
    switch (msg.what) {
        case 0x06:
          addDevice(device);
        break;
      default:
        break;
    }
    super.handleMessage(msg);
  }
};

以上三種方法都可以實現(xiàn)UI的更新,掌握哪種方式取決于代碼中的疊加度,不過個人推薦使用方法一。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論