国产探花免费观看_亚洲丰满少妇自慰呻吟_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的內容的效果。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台山市| 会东县| 喀喇| 舟曲县| 历史| 灌南县| 合江县| 获嘉县| 庄河市| 平塘县| 松溪县| 罗甸县| 蛟河市| 青岛市| 惠水县| 吐鲁番市| 明溪县| 札达县| 墨脱县| 乌鲁木齐市| 昆明市| 霞浦县| 五寨县| 丹凤县| 聊城市| 台中市| 镇雄县| 和硕县| 海阳市| 文登市| 和平县| 麻栗坡县| 射阳县| 吴江市| 江城| 浦城县| 泗水县| 闸北区| 柳河县| 云和县| 米泉市|