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。