Activity利用Handler与Thread进行通讯,写了一个简单Demo

本文通过一个具体的例子展示了如何使用Android中的Handler、Thread和Message类来实现定时更新UI的功能。在示例中,作者创建了一个Activity,利用按钮控制启动和停止时间更新,同时通过Handler在主线程中更新TextView显示的时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近写了一个列子,想跟大家一起分享.
用android.os.Handler、java.lang.Thread以及android.os.Message这三个类的整合应用。
这里只有Activity类代码.其他的一些布局文件,我想看到以下代码,你们因该明白.

import java.text.SimpleDateFormat;
import java.util.Date;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

import com.wm.nsp.R;

public class DateHandlerActiviy extends Activity {

private MyHandler myHandler;
private TextView textView;
private boolean bool = true;
private static final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.date);

textView = (TextView)findViewById(R.id.textView);
Button startButton = (Button)findViewById(R.id.startButton);
Button endButton = (Button)findViewById(R.id.endButton);

startButton.setOnClickListener(listener);
endButton.setOnClickListener(listener);

myHandler = new MyHandler(Looper.getMainLooper());
}

private OnClickListener listener = new OnClickListener() {

@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.startButton:
bool = true;
new myThread().start();//启动线程,开始计时
break;
case R.id.endButton:
bool = false;//结束线程
break;
default:
break;
}
}
};

class myThread extends Thread{

@Override
public void run() {
while(bool){
Message message = myHandler.obtainMessage();
message.what = 1;
message.obj = simpleDateFormat.format(new Date());
myHandler.sendMessage(message);
try {
Thread.sleep(1000);//休息一秒
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

class MyHandler extends Handler{

public MyHandler(Looper looper){
super(looper);
}

@Override
public void handleMessage(Message msg) {
Log.i("System.out", msg.obj+"");
if(msg.what == 1){
textView.setText(msg.obj.toString());
}
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值