HandlerThread的使用------Hander所在线程

HandlerThread主要用在给Handler开辟一个新的线程,HandlerThread有Looper对象,避免了继承Thread时对内部Looper进行设置。在HandlerThread主要使用两个方法:
(1)getLooper()用来获取HandlerThread的Looper对象,用来初始化Handler对象。如果HandlerThread没有started或者isAlive()返回false,getLooper()对象将返回null,如果HandlerThread对象started,这个方法在Looper初始化之前,将一直阻塞。

(2)quit()停止当前的looper,如果HandlerThread没有started或者已经finished,将返回false,否则looper被要求停止循环,返回true。

public class MainActivity extends Activity {
	
	private Button start,cancel;
	private Handler handler;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		
		start = (Button)findViewById(R.id.button1);
		start.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				handler.sendEmptyMessage(0);
				System.out.println(Thread.currentThread().getId());
			}
		});
		
		HandlerThread workThread = new HandlerThread("WorkThread");
		//workThread.start();
		
		handler = new Handler(workThread.getLooper()){
			@Override
			public void handleMessage(Message msg) {
				switch(msg.what){
					case 0:
						Toast.makeText(MainActivity.this, "测试", Toast.LENGTH_SHORT).show();
						System.out.println(Thread.currentThread().getId());
				}
			}
			
		};
	}

}

把上面的注释去掉,启动线程就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值