android使用handler ui线程和子线程通讯更新ui示例
android使用handler ui线程和子线程通讯更新ui示例
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下:packagecom.act262.sockettx;importandroid.app.Activity;importa...

复制代码 代码如下:

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);

}

}

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新安卓软件开发学习
热门安卓软件开发学习
编程开发子分类