效果,三秒后执行doSomething()
1、Handler+Thread
Handler handler=new Handler(){ public void handleMessage(){ doSomething(); } }; class TimeThread implemnts Runnable{ public void run(){ while(true){ Thread.sleep(3000); handler.sendMessage(); } } } new Thead(new TimeThread)).start();
2、Handler.postDelayed
Handler handler=new Handler(); Runnable runnable=new Runnable(){ public void run(){ doSomething(); } } handler.postDelayer(runnable,3000); handler.removeCallbacks(runnable);
3、Handler+Timer+TimerTask
Timer timer=new Timer(); Handler handler=new Handler(){ public void handleMessage(){ doSomething(); }; } TimerTask task=new TimerTask(){ public void run(){ handler.sendMessage(); } } timer.schedule(task,0,3000); timer.cancel();
*4、Rx*
Observable.timer(3000,TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1(){ public void call(Long along){ doSomething(); } }); );
前三种方案很不优雅,Rx使用链式的形式,一目了然。