Android 44 更新主線程(UI線程)組件 線程 發送message

第一步

activity_main.xml
   <TextView
        android:layout_width="match_parent"
        android:id="@+id/text"
        android:layout_height="119dp"
        android:text="好好學習天天向上!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/change_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button" />

第二步

package com.example.myapplication;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

    //定義UPDATE_TEXT這個整型敞亮,用於表示更新TextView這個動作
    public static final int UPDATE_TEXT = 1;

    private TextView text;
    private Button changeText;

    //創建一個Handler
    private Handler handler = new Handler() {

        public void handleMessage(Message msg) {
            switch (msg.what) {
                case UPDATE_TEXT:
                    //在這裏可以進行UI操作
                    //對msg.obj進行String強制轉換
                    String string=(String)msg.obj;
                    text.setText(string);
                    break;
                default:
                    break;
            }
        }

    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = (TextView) findViewById(R.id.text);
        changeText = (Button) findViewById(R.id.change_text);
        changeText.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.change_text:
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        //創建一個message
                        //設置what字段的值爲UPDATE_TEXT,主要是爲了區分不同的message
                        //設置message.obj的內容
                        //調用Handler的message對象
                        //handler中的handlermessage對象是在主線程中運行的
                        String string="花子凋零水自流";
                        Message message = new Message();
                        message.what = UPDATE_TEXT;
                        message.obj=string;
                        handler.sendMessage(message);
                    }
                }).start();
                break;
            default:
                break;
        }
    }

}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章