Handler初级用法

/*功能描述 1 布局: 2 点击“自动增加”,每隔1S上面的文本数值增加2,但最大显示9并作出提示 3 点击“自动减少”,每隔1S上面的文本数值减少2,但最小显示0并作出提示 4 点击“暂停”,上面的文本数值不再变化 */先贴源码: import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class HandlerActivity2 extends Activity implements View.OnClickListener { private TextView textView; private Button increaseButton; private Button decreaseButton; private Button pauseButton; private Handler mhandler = new Handler() { @Override public void handleMessage(Message msg) { String str = (String) textView.getText(); int i = Integer.parseInt(str); switch (msg.what) { case 1: { i += 2; increaseButton.setEnabled(true); decreaseButton.setEnabled(true); mhandler.removeMessages(2); textView.setText(i + ""); mhandler.sendEmptyMessageDelayed(1, 1000); if (i >= 9) { textView.setText(9 + ""); increaseButton.setEnabled(false); mhandler.removeMessages(1); Toast.makeText(getApplicationContext(), "已经到最大了", 0).show(); } } break; case 2: { i -= 2; decreaseButton.setEnabled(true); increaseButton.setEnabled(true); mhandler.removeMessages(1); textView.setText(i + ""); mhandler.sendEmptyMessageDelayed(2, 1000); if (i <= 0) { textView.setText(0 + ""); decreaseButton.setEnabled(false); Toast.makeText(getApplicationContext(), "已经到最小了", 0).show(); mhandler.removeMessages(2); } } break; default: break; } } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test_handler); textView = (TextView) findViewById(R.id.test_text_id); increaseButton = (Button) findViewById(R.id.test_button1_id); decreaseButton = (Button) findViewById(R.id.test_button2_id); pauseButton = (Button) findViewById(R.id.test_button3_id); increaseButton.setOnClickListener(this); decreaseButton.setOnClickListener(this); pauseButton.setOnClickListener(this); } public void onClick(View v) { if (v == increaseButton) { Message msg = new Message(); msg.what = 1; mhandler.sendMessage(msg); } else if (v == decreaseButton) { Message msg = new Message(); msg.what = 2; mhandler.sendMessage(msg); } else if (v == pauseButton) { mhandler.removeMessages(1); mhandler.removeMessages(2); } } }分析:

首先要定义一个Handler mhandler,并实例化:

private Handler mhandler = new Handler() { @Override public void handleMessage(Message msg) { String str = (String) textView.getText(); int i = Integer.parseInt(str); switch (msg.what) { case 1: { i += 2; increaseButton.setEnabled(true); decreaseButton.setEnabled(true); mhandler.removeMessages(2); textView.setText(i + ""); mhandler.sendEmptyMessageDelayed(1, 1000); if (i >= 9) { textView.setText(9 + ""); increaseButton.setEnabled(false); mhandler.removeMessages(1); Toast.makeText(getApplicationContext(), "已经到最大了", 0).show(); } } break; case 2: { i -= 2; decreaseButton.setEnabled(true); increaseButton.setEnabled(true); mhandler.removeMessages(1); textView.setText(i + ""); mhandler.sendEmptyMessageDelayed(2, 1000); if (i <= 0) { textView.setText(0 + ""); decreaseButton.setEnabled(false); Toast.makeText(getApplicationContext(), "已经到最小了", 0).show(); mhandler.removeMessages(2); } } break; default: break; } } };在这个里面,要重写public void handleMessage(Message msg)方法,从方法的名字可以看出这个方法是用来处理Message的,它接受从handler发过来的Message,

然后做出响应的处理。


Handler有三个作用:

一、发送(Messageuixiang)消息

handler.SendMessage(Message msg)

二、接受消息(并处理消息)

handlerMessage(Message msg)

三、清除消息队列

handler.remove(what)

Message类:

在Message对象中,有三个参数,其中what是用来标记线程的,标记之后,把这个线程的msg发送到主线程中去,用handleMessage(Message msg)接受并做出判断,然后做出相应的处理,最后反应到Activity中去,有需要的话,在UI上面做出相应的变化。

下面这张图是转别人的,画的很具体。

参考博客:http://qaohao.iteye.com/blog/509145


//

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值