简单介绍一下本文出现的名词: Handler:可接受子线程发送的消息数据,主要用来主线程更新UI。用Java线程来实现HandlermHandlernewHandler(){OverridepublicvoidhandleMessage(Messagemsg){super。handleMessage(msg);todo}};OverrideprotectedvoidonCreate(BundlesavedInstanceState){super。onCreate(savedInstanceState);setContentView(R。layout。activitydemo);newThread(newHandleThread())。start();}publicclassHandleThreadimplementsRunnable{Overridepublicvoidrun(){while(true){try{Thread。sleep(5000);}catch(InterruptedExceptione){e。printStackTrace();}MessagemessagenewMessage();message。what1;mHandler。sendMessage(message);}}}用Android原生API实现privateTimermTimernewTimer();privateTimerTaskmTimerTHandlermHandlernewHandler(){OverridepublicvoidhandleMessage(Messagemsg){super。handleMessage(msg);todo}};OverrideprotectedvoidonCreate(BundlesavedInstanceState){super。onCreate(savedInstanceState);setContentView(R。layout。activitydemo);mTimerTasknewTimerTask(){Overridepublicvoidrun(){MessagemessagenewMessage();message。what1;mHandler。sendMessage(message);}};mTimer。schedule(mTimerTask,2000,2000);}停止计时器publicvoidcancelTimer(){mTimer。cancel();}在我的项目中,上面两种方式好少用到了,现在比较常用的是RxJava2的定时器privateDisposablemDOverrideprotectedvoidonCreate(BundlesavedInstanceState){super。onCreate(savedInstanceState);setContentView(R。layout。activitydemo);mDisposableObservable。timer(5000,TimeUnit。MILLISECONDS)。observeOn(AndroidSchedulers。mainThread())。subscribe(newConsumerLong(){Overridepublicvoidaccept(LongaLong){todo5秒后执行}},throwable{});}停止计时publicvoidcancel(){if(mDisposable。isDisposed()){mDisposable。dispose();}}privateDisposablemDOverrideprotectedvoidonCreate(BundlesavedInstanceState){super。onCreate(savedInstanceState);setContentView(R。layout。activitydemo);mDisposableObservable。interval(5000,TimeUnit。MILLISECONDS)。observeOn(AndroidSchedulers。mainThread())。subscribe(newConsumerLong(){Overridepublicvoidaccept(LongaLong){todo每隔5s执行一次}},throwable{});}停止计时publicvoidcancel(){if(mDisposable。isDisposed()){mDisposable。dispose();}} RxJava定时任务提供了很多方便的API就不一一写了