详解Handler和Looper的关系

博客详细探讨了Android中Handler和Looper的工作原理。通过查看源代码,博主揭示了Handler如何将Message放入消息队列,而Looper则负责遍历并取出Message供Handler处理。文章以一个简单的项目为例,展示了它们在实际应用中的交互,并通过分析Looper源代码,解释了消息队列的存在和工作方式。
摘要由CSDN通过智能技术生成

这几天在看android的Handler和Looper的用法,需然以前对于这两者的用法我已经很清楚了,但今天我本着深入了解的态度去关于两者的源代码。果不其然,里面真是大有文章啊,让我学到了很多东西,刻不容缓,于是马上写博客记录下来。。。(看来以后要多看点源代码咯~~~·生气)。

在例子开始前,我们来看一下google API对两者的解释:

先来看一下Looper这个类:


再来看一下handler这个类的google给出的解释:

简单的来说:大家可以这样来理解,有一个消息队列MessageQueue(队列应该大家都知道了吧。。。。。),我们handler要做的工作就是将一个Message对象都到这个消息队列和负责处理从被消息队列拿出来的Message,那么谁负责遍历和拿取消息队列内的消息给handler呢?没错,这些遍历和拿取的工作就是Looper来完成的。好了,下面来看一下我写的例子(如果有大神飘过的话,别见怪。。别见怪。。。偷笑)

先来看一下整个项目的搭构:

其中的布局文件main.xml里面很简单,久一个TextView和一个Button。(不信的话。。。。。我也不给你看大笑)

好了,现在我们来看一下activity里面的代码

public class HLActivity extends Activity {
    /** Called when the activity is first created. */
	private TextView textView=null;
	private Button btn=null;
	//private Handler handler=null;
	public static int i=0;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initralWeight();
        /*handler=new Handler(){
        	@Override
        	public void handleMessage(Message msg) {
        		// TODO Auto-generated method stub
        		textView.setText("当前点击运行线程的次数为"+msg.arg1);
        	}
        };*/
        
    }
    private class BtnListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			
			TestThread tt=new TestThread();
			T
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值