最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Android UI更新的幾種方法

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

前言

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

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

一、Activity.runOnUiThread

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

mActivity.runOnUiThread(new Runnable() {
  @Override
  public void run() {
    Log.e(TAG, "開始添加設(shè)備!");
    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();

然后進(jìn)入handler下進(jìn)行處理

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

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

相關(guān)文章

  • android不讀入內(nèi)存獲取圖像寬高信息的方法

    android不讀入內(nèi)存獲取圖像寬高信息的方法

    這篇文章主要介紹了android不讀入內(nèi)存獲取圖像寬高信息的方法,涉及Android獲取圖像信息的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • Android自定義復(fù)合控件實(shí)現(xiàn)通用標(biāo)題欄

    Android自定義復(fù)合控件實(shí)現(xiàn)通用標(biāo)題欄

    這篇文章主要為大家詳細(xì)介紹了Android自定義復(fù)合控件實(shí)現(xiàn)通用標(biāo)題欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Android仿小米安全中心檢測(cè)進(jìn)度條效果

    Android仿小米安全中心檢測(cè)進(jìn)度條效果

    這篇文章主要介紹了Android仿小米安全中心檢測(cè)進(jìn)度條效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 詳解Android沉浸式實(shí)現(xiàn)兼容解決辦法

    詳解Android沉浸式實(shí)現(xiàn)兼容解決辦法

    本篇文章主要介紹了詳解Android沉浸式實(shí)現(xiàn)兼容解決辦法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • Android?RecyclerView使用ListAdapter高效刷新數(shù)據(jù)的操作方法

    Android?RecyclerView使用ListAdapter高效刷新數(shù)據(jù)的操作方法

    這篇文章主要介紹了Android?RecyclerView使用ListAdapter高效刷新數(shù)據(jù),本次也是介紹了用另外一種方法來(lái)實(shí)現(xiàn)RecyclerView高效刷新數(shù)據(jù)的功能,需要的朋友可以參考下
    2022-10-10
  • Android列表控件Spinner簡(jiǎn)單用法示例

    Android列表控件Spinner簡(jiǎn)單用法示例

    這篇文章主要介紹了Android列表控件Spinner簡(jiǎn)單用法,結(jié)合實(shí)例形式分析了Android列表控件Spinner的布局與功能實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-12-12
  • Android中的layout_gravity與gravity屬性詳解

    Android中的layout_gravity與gravity屬性詳解

    layout_gravity和gravity是Android開發(fā)中用于控制視圖布局和對(duì)齊方式的兩個(gè)屬性,layout_gravity用于指定視圖在父容器中的對(duì)齊方式,而gravity用于指定視圖內(nèi)部?jī)?nèi)容的對(duì)齊方式,本文介紹Android中的layout_gravity與gravity屬性,感興趣的朋友一起看看吧
    2025-03-03
  • Android自定義View實(shí)現(xiàn)球形動(dòng)態(tài)加速球

    Android自定義View實(shí)現(xiàn)球形動(dòng)態(tài)加速球

    這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)球形動(dòng)態(tài)加速球,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Android編程解析XML方法詳解(SAX,DOM與PULL)

    Android編程解析XML方法詳解(SAX,DOM與PULL)

    這篇文章主要介紹了Android編程解析XML方法,結(jié)合實(shí)例形式詳細(xì)分析了Android解析XML文件的常用方法與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-01-01
  • Flutter Future異步操作詳細(xì)講解

    Flutter Future異步操作詳細(xì)講解

    這篇文章主要介紹了Flutter Future異步操作,future是Future類的對(duì)象,其表示一個(gè)T類型的異步操作結(jié)果。如果異步操作不需要結(jié)果,則future的類型可為Future
    2023-03-03

最新評(píng)論

宜都市| 临澧县| 泸州市| 新晃| 治多县| 高阳县| 鹤岗市| 沛县| 临清市| 托克逊县| 甘孜| 枝江市| 乌兰县| 漾濞| 楚雄市| 唐山市| 包头市| 运城市| 古田县| 嵊泗县| 霍州市| 河津市| 尉犁县| 合江县| 舟山市| 斗六市| 乌什县| 襄樊市| 赤峰市| 九寨沟县| 杭州市| 康马县| 攀枝花市| 茌平县| 化德县| 册亨县| 兴隆县| 望奎县| 东莞市| 喀什市| 容城县|