{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
System.out.println("Activity —> " + Thread.currentThread().getId()); handler.post®;
}
private Handler handler = new Handler();
private Runnable r = new Runnable()
{
@Override public void run()
{
try { Thread.sleep(2000);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block e.printStackTrace();
}
System.out.println("Runnalbe —> " + Thread.currentThread().getId());
}
};
}
通过这个例子的输出可以发现,Runnable对象和主用户界面线程的ID是相同。在这个例子中,我们直接利用handler对象post了一个runnable对象,相当于直接调用了Runnable对象的run函数,也就说没有经过start函数调用run(),那么就不会创建一个新线程,而是在原有线程内部直接调用 run()方法,因此输出的线程Id是相同的。
**b、如果new一个带参构造函数的Handler对象,那么这个Handler对象将与参数所表示的Looper相关联。**注意:此时线程类应该是一个特殊类HandlerThread类,一个Looper类的Thread类,它继承自Thread类。
HandlerThread handlerthread = new HandlerThread(“MyThread”);
handlerthread.start();
private MyHandler handler = new MyHandler(handlerthread.getLooper());
class MyHandler extends Handler
{
public MyHandler() { }
public MyHandler(Looper looper)
{
super(looper);
}
}
下面这个例子,将介绍如何开启一个新的线程,并通过Handler处理消息。
public class HandlerTe