国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android使用Handler和Message更新UI

2019-12-12 06:02:42
字體:
來源:轉載
供稿:網友

在Android中,在非主線程中更新UI控件是不安全的,app在運行時會直接Crash,所以當我們需要在非主線程中更新UI控件,那么就需要用到Handler和Message來實現
Demo中,使用到一個按鈕和一個TextView,點擊按鈕之后改變TextView的內容,按鈕點擊時候新建一個進程,在進程中對UI控件進行修改。

public class MainActivity extends Activity implements OnClickListener {  private static final int UPDATE_TEXT = 1;  private Button send;  private TextView tv;    private Handler hd = new MyHandler();  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    send = (Button) findViewById(R.id.bt_sendMessage);    tv = (TextView) findViewById(R.id.tv_text);    send.setOnClickListener(this);  }  @Override  public void onClick(View v) {    switch (v.getId()) {    case R.id.bt_sendMessage:      new Thread(new Runnable() {        @Override        public void run() { // 新建一個線程,并新建一個Message的對象,是用Handler的對象發送這個Message          Message msg = new Message();          msg.what = UPDATE_TEXT; // 用戶自定義的一個值,用于標識不同類型的消息          hd.sendMessage(msg); // 發送消息        }      }).start();      break;    default:      break;    }  }    // 定義一個內部類繼承自Handler,并且覆蓋handleMessage方法用于處理子線程傳過來的消息  class MyHandler extends Handler{    @Override    public void handleMessage(Message msg) {      super.handleMessage(msg);      switch (msg.what) {      case UPDATE_TEXT: // 接受到消息之后,對UI控件進行修改        tv.setText("修改成功!");        break;      default:        break;      }    }  }}

理解:先在主活動中定義一個內部類,并繼承自Handler,并且覆蓋Handler中的handleMessage方法,這個方法在Handler中是一個空方法,便于我們自定義消息的內容。然后在onCreate方法中,獲取Button并且添加點擊事件,在事件中添加一個線程,在線程中,使用Message類封裝一個消息,然后用Handler的對象發送這個消息,Handler對象的handleMessage方法就會被調用,達到改變TextView的內容的效果。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 瑞安市| 盘山县| 楚雄市| 宜章县| 靖宇县| 高台县| 镇宁| 九江县| 凤翔县| 定安县| 永德县| 中阳县| 乳山市| 宁武县| 汉寿县| 秭归县| 类乌齐县| 扎兰屯市| 都匀市| 革吉县| 长沙市| 大悟县| 若羌县| 神农架林区| 南皮县| 建平县| 佛山市| 峨眉山市| 清新县| 乌苏市| 阿城市| 偃师市| 洪雅县| 洛浦县| 三江| 报价| 陆丰市| 新竹县| 谷城县| 资兴市| 红原县|