使用Handler机制实现向主线程中发送消息,实现计时更新操作的例子,与大家共勉,有不足的地方还希望大家指出。

-----------xml文件---------------

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<Button
android:id="@+id/bn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="点击更新时间" />

<TextView
android:id="@+id/time"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="更新时间"
/>

</LinearLayout>

--------------Activity中的代码---------------------

package com.jzscme.intent;

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 Handler_demoActivity extends Activity {

private TextView time;

// 设置消息编号
private static final int UPDATE_TIME = 0;
private static final int UPDATE_SUCC = 1;

//定义用于计时的变量
private int showTime = 0;
//定义是否运行的标志
private boolean isrunning = false;

// 定义handler对象
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
Bundle b = msg.getData();//获取bundle对象中保存的数据
String name = b.getString("time");
switch (msg.what) {
case UPDATE_TIME:
time.setText("正在更新:" + name);
break;

case UPDATE_SUCC:
time.setText("更新完毕");
break;
}
super.handleMessage(msg);
}

};

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

time = (TextView) findViewById(R.id.time);
//设置按钮监听
((Button) findViewById(R.id.bn)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 点击按钮之后开启线程计时
isrunning = true;
myThread thread = new myThread();
thread.start();
}
});
}

/**
* 更新时间线程
*
* @author Administrator
*
*/
public class myThread extends Thread {
public void run() {
while (isrunning) {
try {
showTime++;//计数器 ++
Bundle bundle = new Bundle();//使用Bundle对象保存计数值
bundle.putString("time", String.valueOf(showTime));

Message msg = new Message();//定义message对象
if (showTime <= 5) {//当计数值小于5时
msg.what = UPDATE_TIME;//设置消息发送的编号
} else {
isrunning = false;
msg.what = UPDATE_SUCC;
}
msg.setData(bundle);
handler.sendMessage(msg);//每隔一秒向handler发送一次消息
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

}

更多相关文章

  1. Android(安卓)OpenGL ES(五):GLSurfaceView
  2. Android开发常见异常和解决方案(二)
  3. Android(安卓)ApiDemos示例解析(117):Views->Focus->3. Circular
  4. Java OR Android
  5. Android消息提示框和对话框
  6. android权限管理之PermissionsDispatcher使用
  7. android之自定义带图片的title
  8. Android(安卓)自定义View onDraw方法详解
  9. Android(安卓)自定义ScrollView 实现拉下伸缩头部view

随机推荐

  1. 【android】关于退出时关闭“后台”显示
  2. Ubuntu 系统上编译Android 系统
  3. [置顶] Android进程间通信AIDL的使用分析
  4. Android音视频处理之MediaExtractor
  5. 求助: Android 加载 webview, 点击webvie
  6. android 布局文件属性说明
  7. Android imageView 属性知识
  8. android TextView xml中设置最大行数
  9. android 问题总结
  10. android 开发包的离线安装方式