Android實(shí)現(xiàn)輪詢的三種方式
本文實(shí)例為大家分享了Android實(shí)現(xiàn)輪詢的方式,供大家參考,具體內(nèi)容如下
1.通過rxjava實(shí)現(xiàn)(代碼中使用了Lambda表達(dá)式)
private static final int PERIOD = 10 * 1000;private static final int DELAY = 100;private Disposable mDisposable;/** * 定時(shí)循環(huán)任務(wù) */private void timeLoop() { mDisposable = Observable.interval(DELAY, PERIOD, TimeUnit.MILLISECONDS) .map((aLong -> aLong + 1)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(aLong -> getUnreadCount());//getUnreadCount()執(zhí)行的任務(wù)}//關(guān)閉定時(shí)任務(wù)if (mDisposable != null) mDisposable.dispose();
2.通過Handler實(shí)現(xiàn)
private Handler mHandler = new Handler(Looper.getMainLooper()); // 全局變量private Runnable mTimeCounterRunnable = new Runnable() { @Override public void run() {//在此添加需輪尋的接口getUnreadCount();//getUnreadCount()執(zhí)行的任務(wù) mHandler.postDelayed(this, 20 * 1000); }};//關(guān)閉定時(shí)任務(wù)mHandler.removeCallbacks(mTimeCounterRunnable);
3.使用Java的Timer和TimerTask實(shí)現(xiàn)
private static final int PERIOD = 10 * 1000;private static final int DELAY = 100;private Timer mTimer;private TimerTask mTimerTask;private void timeLoop2(){ mTimer = new Timer(); mTimerTask = new TimerTask() { @Override public void run() { //在此添加輪詢 } }; mTimer.schedule(mTimerTask,DELAY,PERIOD);}//關(guān)閉定時(shí)任務(wù)if (mTimer != null) mTimer.cancel();
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案2. ASP.NET泛型三之使用協(xié)變和逆變實(shí)現(xiàn)類型轉(zhuǎn)換3. jsp+servlet簡單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))4. 如何在jsp界面中插入圖片5. XML基本概念XPath、XSLT與XQuery函數(shù)介紹6. JS中map和parseInt的用法詳解7. PHP循環(huán)與分支知識(shí)點(diǎn)梳理8. jsp實(shí)現(xiàn)登錄界面9. AspNetCore&MassTransit Courier實(shí)現(xiàn)分布式事務(wù)的詳細(xì)過程10. JSP數(shù)據(jù)交互實(shí)現(xiàn)過程解析
