`
wangming2012
  • 浏览: 141148 次
  • 性别: Icon_minigender_1
  • 来自: 枣阳
社区版块
存档分类
最新评论

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

阅读更多
最近写了一个列子,想跟大家一起分享.
用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());
			}
		}
	}
}
分享到:
评论

相关推荐

    Android线程操作 handler demo

    现在,让我们来看一个简单的Handler Demo: ```java // 主线程的Handler public class MainActivity extends AppCompatActivity { private Handler mainHandler = new Handler() { @Override public void ...

    Android源代码:HandlerDemo

    在Android开发中,`Handler`是一个至关重要的组件,它用于在主线程中处理来自其他线程的消息,确保UI更新操作的正确执行。本项目“Android源代码:HandlerDemo”将深入探讨`Handler`机制及其在多线程环境中的应用。 ...

    handler回调机制 demo

    在Android开发中,Handler回调机制是用于解决线程间通信的核心技术之一,它与Looper和Message紧密相连,共同构建了Android的消息处理系统。本篇将深入解析Handler回调机制,并通过提供的"handler的回调机制"DEMO来...

    Android Handler传值的demo

    在主线程中创建一个`Handler`实例,这通常是你的Activity或Fragment。`Handler`的构造函数通常与`Looper`关联,`Looper`是消息队列的管理者,它会不断地检查是否有新的消息需要处理。 2. **定义Message的处理逻辑*...

    刷新Activity的Demo

    1. **创建Handler对象**:首先,在`Activity`中创建一个`Handler`对象,通常在`onCreate()`或者`onResume()`方法中初始化,确保`Handler`与UI线程关联。 ```java private Handler mHandler = new Handler() { @...

    HandlerDemo.7z

    `HandlerDemo.7z`这个压缩包文件很可能包含了一个示例项目,演示了如何使用`Handler`进行这种通信,以及如何通过弱引用来防止内存泄漏。下面我们将详细探讨`Handler`机制及其在处理内存溢出问题中的应用。 首先,...

    Handler_Demo

    以下是一个简单的`Handler`使用流程: 1. 在主线程中创建`Handler`实例,重写`handleMessage()`方法。 2. 在工作线程中,通过`Handler`的`sendMessage()`或`post(Runnable r)`方法发送消息或者Runnable对象。 3. ...

    handler异步更新

    Handler是Android系统中用于处理线程间通信的重要机制,尤其在UI线程与后台线程交互时发挥着关键作用。本文将深入解析Handler的工作原理、使用方法及其异步更新的应用场景。 首先,我们来理解一下Android中的线程...

    Handler通信

    在Android开发中,`Handler`通信机制是一种常见且重要的组件,用于实现主线程与子线程之间的消息传递和异步处理。本示例"Handler子线程间通信Demo"将详细解析这一机制及其应用场景。 首先,理解`Handler`、`Looper`...

    android 很简单的进度条显示的demo

    本Demo展示了如何在Android应用中简单地实现一个进度条显示功能,利用了线程(Thread)和Handler来更新界面。以下是这个示例的具体解析和相关知识点。 1. **进度条组件** Android提供了多种类型的进度条,包括`...

    Android Smack聊天室 Demo

    **Android Smack聊天室 Demo** 是一个基于Android平台的即时通讯应用示例,它利用了Smack库来实现XMPP协议的功能。这个Demo是开发者在CSDN博客上分享的一个项目,链接为...

    QQdemo android

    5. **数据存储**:为了保存用户的登录状态、聊天记录等信息,QQDemo可能使用SQLite数据库进行本地存储,或者利用SharedPreferences保存简单的键值对数据。对于大量数据,还可以考虑使用ContentProvider进行管理。 6...

    android 简单的摇奖demo

    在Android开发中,创建一个简单的摇奖Demo是一个有趣且实用的练习,可以帮助开发者熟悉和掌握Android的多线程处理、事件传递以及UI组件的使用。在这个项目中,我们主要涉及了以下几个关键知识点: 1. **随机数生成*...

    简单的handle demo 实现计时器功能,亲测可用,线程例子

    9. **源代码分析**:HandlerDemo可能包含一个主Activity,其中初始化了Handler,并在onCreate()或onResume()中启动计时器。同时,Runnable的run()方法可能包含对计时器行为的逻辑,比如每过一段时间更新UI或者执行...

    Handler用法整理总结

    在第二个示例(Demo2)中,`HandlerThread`被用来创建一个独立的后台线程。`HandlerThread`继承自`Thread`,内部包含了`Looper`,因此它可以创建自己的消息循环。通过`getLooper()`方法,我们可以获取`...

    thread-handler-asynctask-demo

    "thread-handler-asynctask-demo"这个项目是一个关于Java线程和异步任务处理的示例,主要用于演示如何在Android环境中有效地管理后台任务以避免阻塞主线程。 1. **线程基础** - **线程**:线程是程序执行的最小...

    Android开发的各种demo

    通过实践demo,开发者将理解如何创建、启动Activity,以及如何利用Intent进行界面间的跳转。 4. **生命周期**:理解Activity和Fragment的生命周期至关重要,包括onCreate()、onStart()、onResume()、onPause()、...

    android 异步刷新demo

    - **生命周期**:AsyncTask与Activity的生命周期绑定,当Activity销毁时,AsyncTask可能无法正常执行或回调,而Handler不受此限制。 - **执行顺序**:Handler可以保证消息的执行顺序,而AsyncTask的并发控制相对较弱...

    android 多线程下载demo

    这个"android多线程下载demo"展示了如何利用多线程分段下载一个APK文件,同时实现实时更新UI展示下载进度,并在下载完成后自动跳转到应用安装界面。以下是对这个Demo涉及知识点的详细解释: 1. **多线程下载**:多...

    webxml写的号码归属地查询DEMO

    标题中的"webxml写的号码归属地查询DEMO"指的是一个基于Web服务的程序,用于查询电话号码的归属地信息。这种程序通常通过调用特定的Web接口,利用XML(可扩展标记语言)来交换和处理数据。XML是一种结构化数据格式,...

Global site tag (gtag.js) - Google Analytics