定時(shí)器?:
1.Handler類的postDelayed方法:
Handler mHandler = new Handler();
? ? ? ? ? ? ? ? Runnable r = new Runnable() {
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public void run() {
? ? ? ? ? ? ? ? ? ? ? ? ? ? //do something
? ? ? ? ? ? ? ? ? ? ? ? ? ? //每隔1s循環(huán)執(zhí)行run方法
? ? ? ? ? ? ? ? ? ? ? ? ? ? mHandler.postDelayed(this, 1000);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? };
主線程中調(diào)用:? mHandler.postDelayed(r, 100);//延時(shí)100毫秒
2.用handler+timer+timeTask方法:
Handler handler = new Handler() {
? ? ? ? @Override
? ? ? ? public void handleMessage(Message msg) {
? ? ? ? ? ? if (msg.what == 1){
? ? ? ? ? ? ? ? //do something
? ? ? ? ? ? }
? ? ? ? ? ? super.handleMessage(msg);
? ? ? ? }
? ? };
? ? Timer timer = new Timer();
? ? TimerTask timerTask = new TimerTask() {
? ? ? ? @Override
? ? ? ? public void run() {
? ? ? ? ? ? Message message = new Message();
? ? ? ? ? ? message.what = 1;
? ? ? ? ? ? handler.sendMessage(message);
? ? ? ? }
? ? };
主線程中調(diào)用:timer.schedule(timerTask,1000,500);//延時(shí)1s该窗,每隔500毫秒執(zhí)行一次run方法
3.Thread+handler方法:
Handler handler = new Handler() {
? ? ? ? @Override
? ? ? ? public void handleMessage(Message msg) {
? ? ? ? ? ? if (msg.what == 1){
? ? ? ? ? ? ? ? //do something
? ? ? ? ? ? }
? ? ? ? ? ? super.handleMessage(msg);
? ? ? ? }
? ? };
? ? class MyThread extends Thread {//這里也可用Runnable接口實(shí)現(xiàn)
? ? ? ? @Override
? ? ? ? public void run() {
? ? ? ? ? ? while (true){
? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? Thread.sleep(1000);//每隔1s執(zhí)行一次
? ? ? ? ? ? ? ? ? ? Message msg = new Message();
? ? ? ? ? ? ? ? ? ? msg.what = 1;
? ? ? ? ? ? ? ? ? ? handler.sendMessage(msg);
? ? ? ? ? ? ? ? } catch (InterruptedException e) {
? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? }
主線程中調(diào)用:new Thread(new MyThread()).start();
三種延時(shí)方法:
1.Handler的postDelayed方法:
new Handler().postDelayed(new Runnable() {
? ? ? ? @Override
? ? ? ? public void run() {
? ? ? ? ? ? ? //do something
? ? ? ? ? }
? ? ? }, 1000);? ? //延時(shí)1s執(zhí)行
2.timer + TimerTask方法:
timer = new Timer();
? ? ? ? ? ? ? ? timer.schedule(new TimerTask() {? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public void run() {
? ? ? ? ? ? ? ? ? ? ? ? ? //do something
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? },1000);//延時(shí)1s執(zhí)行
3.Thread方法:
new Thread(new MyThread()).start();
? ? ? ? new Thread(new Runnable() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void run() {
? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? Thread.sleep(1000);//延時(shí)1s
? ? ? ? ? ? ? ? ? ? //do something
? ? ? ? ? ? ? ? } catch (InterruptedException e) {
? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }).start();