Android Handler and Runnable

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