Handler基本运行机制

Handler,Looper,MessageQueue的基本原理(三个组成一个消息处理机制)最大的作用就是实现线程间的通信

Handler负责把消息对象加入到消息队列当中

Looper(循环器)是一个循环,不停从消息队列当中向外取出消息对象,如果没有消息对象可以取出,那么Looper的代码将会产生阻塞(处于等待状态) 

Looper将消息对象取出来之后,Looper将会调用Handler的handleMessage方法来处理消息对象

Handler基本运行机制

 Handler基本运行机制的例子:

 MainActivity.java

 1 import android.app.Activity;

 2 import android.os.Bundle;

 3 import android.os.Handler;

 4 import android.os.Message;

 5 import android.view.View;

 6 import android.view.View.OnClickListener;

 7 import android.widget.Button;

 8 

 9 public class MainActivity extends Activity {

10     private Button button;

11     private Handler handler;

12     @Override

13     protected void onCreate(Bundle savedInstanceState) {

14         super.onCreate(savedInstanceState);

15         setContentView(R.layout.activity_main);

16         button = (Button) findViewById(R.id.button);

17         button.setOnClickListener(new ButtonListener());

18         

19         handler = new firstHandler();

20     }

21     class ButtonListener implements OnClickListener{

22         public void onClick(View v) {

23             

24             Message msg = handler.obtainMessage();//当用户点击按钮时,我们创建一个消息对象,并使用Handler发送对象

25             

26             msg.what = 2;//消息对象的属性,为了证明发送的消息是自己发送的消息

27             

28              handler.sendMessage(msg);

29              /*上面一行代码将消息对象放置到消息队列中,之后   

30                 1.looper将会从消息队列当中将消息对象取出    

31                 2。looper将会找到与消息对象对应的Handler对象

32                 3.looper将会调用handler对象的handleMessage方法,用于处理消息对象

33              */

34         }

35     }

36     //创建Handler类,

37     class firstHandler extends Handler{

38         //要复写该方法,该方法处理消息

39         public void handleMessage(Message msg) {

40             int what = msg.what;

41             System.out.println(what);

42             super.handleMessage(msg);

43         } 

44     }

45 }

activity_main.xml

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

 2     xmlns:tools="http://schemas.android.com/tools"

 3     android:layout_width="match_parent"

 4     android:layout_height="match_parent"

 5     android:paddingBottom="@dimen/activity_vertical_margin"

 6     android:paddingLeft="@dimen/activity_horizontal_margin"

 7     android:paddingRight="@dimen/activity_horizontal_margin"

 8     android:paddingTop="@dimen/activity_vertical_margin"

 9     tools:context=".MainActivity" >

10 

11     

12     <Button

13         android:id="@+id/button" 

14         android:layout_width="wrap_content"

15         android:layout_height="wrap_content"

16         android:text="button"

17         />

18 </RelativeLayout>

 Handler基本运行机制

 

 

你可能感兴趣的:(handler)