在Android多线程编程中,我们会使用Handler,Thread和Runnable这三个类。Handler一般是在某个线程里创建的,因而Handler和Thread就是相互绑定的,一一对应。 而Runnable是一个接口,Thread是Runnable的子类。所以说,他俩都算一个线程。
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
public class HandlerTest extends Activity {
private Handler handler = new Handler();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// sendMessage();
handler.post(r);
setContentView(R.layout.main);
//Thread t = new Thread(r);
//t.start();
System.out.println("activity--->" + Thread.currentThread().getId());
System.out.println("activityname--->" + Thread.currentThread().getName());
}
Runnable r = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("handler--->" + Thread.currentThread().getId());
System.out.println("handlername--->" + Thread.currentThread().getName());
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
}
在执行上面的代码后,发现HandlerTest等待了10秒后,才显示自己的主界面,而且在Runnable内打印的线程id和UI线程打印的线程id相同!说明该程序中的Runnable是在UI线程中执行的,并没有创建新的线程!常见的新建线程的方法是:
方法一:
Java代码:
Thread thread = new Thread();
thread.start();
方法二:
Java代码:
HandlerThread thread = new HandlerThread("string");
thread.start();