服务器之家

服务器之家 > 正文

android使用handler ui线程和子线程通讯更新ui示例

时间:2021-02-22 12:24     来源/作者:Android开发网
复制代码 代码如下:

package com.act262.sockettx;

 

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.EditText;
import android.widget.TextView;

/**
 * 可以在其他线程中获取View类的数据,但是不能修改或者设置View类的数据
 *
 */
public class Main extends Activity {

    TextView result = null;
    EditText get = null;
    Button update = null;
    Handler handler;

    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.main);
        result = (TextView) findViewById(R.id.result);
        update = (Button) findViewById(R.id.update);
        get = (EditText) findViewById(R.id.get);

        handler = new Handler() {
            public void handleMessage(Message msg) {
                if (msg.what == 1) {
                    result.setText("after update ui "
                            + msg.getData().getString("data")
                            + "  \nman thread : "
                            + Thread.currentThread().getName());
                }
            }
        };

        result.setText("before update ui  main thread : "
                + Thread.currentThread().toString());

        update.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                new MyThread("my thread").start();
            }
        });

    }

    class MyThread extends Thread {
        public MyThread(String name) {
            super(name);
        }

        @Override
        public void run() {
            // 发送不带数据的消息
            // handler.sendEmptyMessage(1);

            // 发送附带数据的消息
            Message msg = new Message();
            Bundle data = new Bundle();
            data.putString("data", get.getText().toString() + " my thread:  "
                    + Thread.currentThread().getName());
            msg.setData(data);
            msg.what = 1;
            handler.sendMessage(msg);
        }
    }
}

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部