HandlerTest2

package com.example.handlertest2;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;

public class HandlerTest extends Activity {

	private Handler handler = new Handler();
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
	    handler.post(r);
	    setContentView(R.layout.main);
	    
	    System.out.println("activity---->" + Thread.currentThread().getId());
	    System.out.println("activity---->" + Thread.currentThread().getName());
	}
	Runnable r = new Runnable(){

		@Override
		public void run() {
			System.out.println("handler---->" + Thread.currentThread().getId());
		    System.out.println("handler---->" + Thread.currentThread().getName());
			try {
				Thread.sleep(10000);
			} catch (InterruptedException e) {
				
				e.printStackTrace();
			}
		}
		
	};
   
	

}

 

 

这个程序用来验证Handler处理的Runnable线程和Activity主线程是在同一个线程下执行的。

首先通过打印我们可以看出都是在一个主线程下执行的

并且依照执行顺序,10秒钟之后主界面的控件才显示出来就已经证明了。

但是如果我们不使用Handler来装载Runnable

使用java标准方式来启动这个线程 ,效果就会不一样了。

Thread t = new Thread(r);

t.start();

调用start方法之后,线程进入就绪状态,当时间片轮转动到该线程的时候,线程就获得CPU的使用权

所以从这个实验当中我们就可以证明Handler并不是真正的另外的启动了一个线程,而是直接在原有线程上调用run函数,至于为什么这么做,后面解释

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值