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());
				}
			}
			
		};
	}

}
HandlerThread的使用------Hander所在线程_第1张图片

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

你可能感兴趣的:(HandlerThread的使用------Hander所在线程)