关于子线程的科普------线程管理之详解
new Thread() {
@Override
public void run() {
super.run();
try {
Thread.sleep(1000);//休眠
//这里要写需要执行的操作
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
第二种方法:
Handler handler = new Handler(); // 如果这个handler是在UI线程中创建的
handler.postDelayed(new Runnable() { // 开启的runnable也会在这个handler所依附线程中运行,即主线程
@Override
public void run() {
initBluetooth(); //这里是想要执行的操作
// new Runnable(){},只是把Runnable对象以Message形式post到UI线程里的Looper中执行,并没有新开线程。
}
}, 200); // 延时0.2s执行run内代码
踩过的坑:
if (v.getId() == R.id.pop_title_change) {
log("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2点击事件触发");
new Thread() {
@Override
public void run() {
super.run();
try {
Thread.sleep(5000);//休眠
log("##########################点击事件进行中");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
log("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%应该是最后出现才对");
}
这里进入子线程后不影响后面继续运行,故“点击事件触发”和“应该是最后出现才对”共同运行,五秒钟后“点击事件进行中”才会打印。
而且线程运行结束会 自动终止。