消息机制--Message.Handler与Looper(2)




package org.lxh.demo;

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

public class MyLoopDemo extends Activity {
	private TextView info;										// 定义文本显示组件
	private Button but;											// 定义按钮组件
	private static final int SET = 1 ;							// what操作码
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);					// 调用布局文件
		this.info = (TextView) super.findViewById(R.id.info);	// 取得组件
		this.but = (Button) super.findViewById(R.id.but);		// 取得组件
		this.but.setOnClickListener(new OnClickListenerImpl());	// 设置单击事件
	}
	private class OnClickListenerImpl implements OnClickListener {
		@Override
		public void onClick(View view) {
			switch (view.getId()) {								// 判断操作的组件ID
			case R.id.but:										// 表示按钮操作
				Looper looper = Looper.myLooper(); 				// 取得当前的线程
				MyHandler myHandler = new MyHandler(looper);	// 构造一个Handler
				myHandler.removeMessages(0) ;					// 清空所有的消息队列
				String data = "魔乐科技软件学院(MLDN)";			// 设置要发送的数据
				Message msg = myHandler.obtainMessage(SET, 1, 1, data);
				myHandler.sendMessage(msg); 					// 发送消息
				break;
			}
		}
	}
	private class MyHandler extends Handler {
		public MyHandler(Looper looper) {						// 接收Looper
			super(looper);										// 调用父类构造
		}
		@Override
		public void handleMessage(Message msg) {				// 处理消息
			switch (msg.what) {									// 判断操作形式
			case 1:
				MyLoopDemo.this.info.setText(msg.obj.toString());// 设置文本内容
			}
		}
	}
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<TextView
		android:id="@+id/info"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content" />
	<Button
		android:id="@+id/but"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:text="启动" />
</LinearLayout>

效果也一样。

如果 不使用looper,系统会自动帮我们调用looper。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值