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

Android UI更新的幾種方法總結(jié)

 更新時(shí)間:2016年11月17日 14:31:00   投稿:lqh  
這篇文章主要介紹了Android UI更新的幾種方法總結(jié)的相關(guān)資料,這里對(duì)Android UI 的幾種更新列出了,并附實(shí)例代碼,需要的朋友可以參考下

 Android UI更新

做過Android開發(fā)的人都遇到過這樣的問題:隨著需求的變化,某些入口界面會(huì)出現(xiàn)UI的增減、內(nèi)容變化和跳轉(zhuǎn)界面變化等問題,這里就說(shuō)明幾種方法來(lái)實(shí)現(xiàn) UI的更新。

1、Activity的 runOnUiThread  

textView = (TextView) findViewById( R.id.tv );
    new Thread(new Runnable() {
      @Override
      public void run() {
 
        runOnUiThread(new Runnable() {
          @Override
          public void run() {
            textView.setText( "更新UI了");
          }
        });
      }
    }).start();

android Activity runOnUiThread() 方法使用 

2、Handler sendEmptyMessage()

package lib.com.myapplication;
 
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity {
 
  private TextView textView ;
 
  Handler handler = new Handler( ) {
    @Override
    public void handleMessage(Message msg) {
      super.handleMessage(msg);
      textView.setText( "Ui更新了");
    }
  };
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 
    textView = (TextView) findViewById( R.id.tv );
    new Thread(new Runnable() {
      @Override
      public void run() {
        try {
          Thread.sleep( 2000 );
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
 
        handler.sendEmptyMessage( 2 ) ;
      }
    }).start();
 
  }
}

3、Handler  post()

package lib.com.myapplication;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity {
 
  private TextView textView ;
 
  Handler handler = new Handler();
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 
    textView = (TextView) findViewById( R.id.tv );
 
    new Thread(new Runnable() {
      @Override
      public void run() {
        try {
          Thread.sleep( 2000 );
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
 
        handler.post(new Runnable() {
          @Override
          public void run() {
            textView.setText( "Ui更新了");
          }
        }) ;
      }
    }).start();
 
  }
}

在子線程中切換到主線程

new Thread(new Runnable() {
  @Override
  public void run() {
    LogUtil.d( "ttt 11111111111" + Thread.currentThread().getName() );
    new Handler(Looper.getMainLooper()).post(new Runnable() {
      @Override
      public void run() {
        LogUtil.d( "ttt 55555555" + Thread.currentThread().getName() );
      }
    });
 
    LogUtil.d( "ttt 22222222222" + Thread.currentThread().getName() );
    LogUtil.d( "ttt 33333333333" + Thread.currentThread().getName() );
    LogUtil.d( "ttt 44444444444" + Thread.currentThread().getName() );
 
  }
}).start();

  結(jié)果


ttt 11111111111Thread-155
ttt 22222222222Thread-155
ttt 33333333333Thread-155
ttt 44444444444Thread-155
ttt 55555555main

  可見這種方式可以快速切換線程,從log日志來(lái)看,切換到主線程不會(huì)阻塞子線程。

4、view Post() 

textView = (TextView) findViewById( R.id.tv );
    new Thread(new Runnable() {
      @Override
      public void run() {
        try {
          Thread.sleep( 2000 );
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
 
        textView.post(new Runnable() {
          @Override
          public void run() {
            textView.setText( "Ui更新了");
          }
        }) ;
      }
    }).start();

總結(jié):

1、其實(shí)上面的四種方式都可歸結(jié)于一種方式:handler 用于Android線程之間的通信。

2、為什么android要求只能在UI線程進(jìn)行UI操作? 主要還是為了避免多線程造成的并發(fā)的問題。在單線程操作UI是安全的。

 感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • Android垃圾回收機(jī)制及程序優(yōu)化System.gc

    Android垃圾回收機(jī)制及程序優(yōu)化System.gc

    這篇文章主要介紹了Android垃圾回收機(jī)制及程序優(yōu)化System.gc的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • Android實(shí)現(xiàn)淘寶選中商品尺寸的按鈕組實(shí)例

    Android實(shí)現(xiàn)淘寶選中商品尺寸的按鈕組實(shí)例

    這篇文章介紹的是仿淘寶中的選中商品不同尺寸,比如衣服有L、M、XL等等的款式。這時(shí)候我們就需要一個(gè)button組來(lái)進(jìn)行了,當(dāng)時(shí)這個(gè)時(shí)候里面的尺寸可能有很多,那怎么辦呢?這里我們就肯定要做個(gè)自適應(yīng)的按鈕組了,要不然弄出來(lái)也沒用。
    2016-08-08
  • android實(shí)現(xiàn)通話自動(dòng)錄音服務(wù)

    android實(shí)現(xiàn)通話自動(dòng)錄音服務(wù)

    這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)通話自動(dòng)錄音服務(wù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • android源碼探索之定制android關(guān)機(jī)界面的方法

    android源碼探索之定制android關(guān)機(jī)界面的方法

    這篇文章主要介紹了android源碼探索之定制android關(guān)機(jī)界面的方法,較為詳細(xì)的分析了Android關(guān)機(jī)界面的相關(guān)原理與代碼實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • Android TextView實(shí)現(xiàn)多文本折疊、展開效果

    Android TextView實(shí)現(xiàn)多文本折疊、展開效果

    這篇文章主要為大家詳細(xì)介紹了Android TextView實(shí)現(xiàn)多文本折疊、展開效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Android事件分發(fā)機(jī)制全面解析

    Android事件分發(fā)機(jī)制全面解析

    這篇文章主要介紹了Android事件分發(fā)機(jī)制全面解析,幫助大家更好的理解和學(xué)習(xí)使用Android開發(fā),感興趣的朋友可以了解下
    2021-03-03
  • Android開發(fā)之Wifi基礎(chǔ)教程

    Android開發(fā)之Wifi基礎(chǔ)教程

    這篇文章主要介紹了Android開發(fā)Wifi基礎(chǔ)教程,實(shí)例分析了Wifi的各種常見基本技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • Android自定義view實(shí)現(xiàn)雪花特效實(shí)例代碼

    Android自定義view實(shí)現(xiàn)雪花特效實(shí)例代碼

    實(shí)現(xiàn)雪花的效果其實(shí)也可以通過自定義View的方式來(lái)實(shí)現(xiàn)的,而且操作上也相對(duì)簡(jiǎn)單一些,下面這篇文章主要給大家介紹了關(guān)于Android自定義view實(shí)現(xiàn)雪花特效的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Kotlin server多線程編程詳細(xì)講解

    Kotlin server多線程編程詳細(xì)講解

    這篇文章主要介紹了Kotlin server多線程編程,Service是實(shí)現(xiàn)程序后臺(tái)運(yùn)行的解決方案,適合執(zhí)行非交互,后臺(tái)預(yù)先的任務(wù),即使用戶打開其他應(yīng)用,Service也能夠正常運(yùn)行
    2023-01-01
  • Android自定義Material進(jìn)度條效果

    Android自定義Material進(jìn)度條效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義Material進(jìn)度條效果的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01

最新評(píng)論

澄江县| 孝义市| 酉阳| 乌拉特后旗| 东城区| 尖扎县| 达拉特旗| 大足县| 德保县| 柳州市| 荣成市| 海口市| 淅川县| 泗阳县| 土默特右旗| 永安市| 阜城县| 习水县| 漳州市| 阿克陶县| 噶尔县| 紫阳县| 富顺县| 鹰潭市| 祥云县| 偃师市| 卢湾区| 蒙自县| 闵行区| 大足县| 应用必备| 涪陵区| 交城县| 小金县| 武清区| 永城市| 水城县| 海淀区| 巴林右旗| 汝城县| 福贡县|