package com.example.dpitest;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
private Button mSendMessage;
private Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSendMessage = (Button)findViewById(R.id.btn);
mHandler = new FirstHandler();
ButtonOnClickListener listener = new ButtonOnClickListener();
mSendMessage.setOnClickListener(listener);
}
class ButtonOnClickListener implements android.view.View.OnClickListener{
@Override
public void onClick(View arg0) {
//当用户点击按钮时我们创建一个消息对象,并用Handler发送该对象
Message msg = mHandler.obtainMessage();
msg.what = 2;
//1:将消息对象放置到消息队列中,Looper将会从消息队列中将消息对象取出,Looper将会找到与消息对象对应的Handler对象
//2:每一个消息对象都有一个与之对应的Handler
//3:Looper会调用Handler对象的handleMessage(Message msg)方法,用于处理消息
mHandler.sendMessage(msg);
}
}
class FirstHandler extends Handler{
//处理消息方法
@Override
public void handleMessage(Message msg) {
int what = msg.what;
Log.d("what:",String.valueOf(what));
}
}
}
如果消息队列有消息,Looper从队列头进行读取,如果没有则阻塞等待。
结果:
Handler(15):工作线程向主线程发送消息
Android(18)发送Handler更新ProgressBar