学习新东西,本想偷懒,虽然早上上班看了一遍,晚上回来又看了一遍,感觉是懂了,不过还是告诉自己切勿眼高手低,所以还是再照着mars的教程把代码再敲一遍。顺便做下笔记。
最基础的一种消息处理机制示意图:
参考网上的资料加视频里面的解释:
Handler
把消息对象放入Message Queue
。
Looper
,循环器,负责从Message Queue
取出消息对象,然后送给Handler
去处理。
package com.zhoumengkang.handler; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { private Button button; private Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button); button.setOnClickListener(new ButtonListener()); handler = new TestHandler();//初始化了一个handler对象 } class ButtonListener implements OnClickListener{ @Override public void onClick(View arg0) { //当用户点击按钮时,我们创建一个消息对象,并使用Handler发送该对象 Message msg = handler.obtainMessage(); msg.what = 2; handler.sendMessage(msg);//把消息对象放入消息队列 //1.Looper将会从消息队列中把消息对象取出 //2.Looper将会把消息对象传回给对应的Handler对象(之前生成这个消息对象的Handler) //3.Handler对象的handlerMessage,再处理消息对象 } } class TestHandler extends Handler{ @Override public void handleMessage(Message msg) { int what = msg.what; System.out.println(what); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }