Runnable并不是一个线程,它是Thread运行过程中的一个片断。
以下例子是创建子线程获取图片后发送给UI线程显示,第一个Runnable运行在子线程中,第二个Runnable运行在UI线程中:
1 2 3 4 5 6 7 8 9 10 11 12 | public void onClick(View v) { new Thread(new Runnable() { // 第一个Runnable public void run() { final Bitmap bitmap = loadImageFromNetwork("http://example.com/image.png"); mImageView.post(new Runnable() { // 第二个Runnable public void run() { mImageView.setImageBitmap(bitmap); } }); } }).start(); } |
而Handler与线程的绑定有两种方式。
第一种是与当前线程绑定:
1 | public Handler handler = new Handler(); |
第二种是指定线程绑定:
1 | handler = new Handler(thread.getLooper()); |