Android兩種輪詢的實(shí)現(xiàn)方法
Android 兩種輪詢的簡(jiǎn)單寫法,供大家參考,具體內(nèi)容如下
public void startPolling() {
subscriber = Observable.interval(0, POLLING_INTERVAL, TimeUnit.MILLISECONDS).
doOnNext(new Action1<Long>() {
@Override
public void call(Long aLong) {
doPolling().
subscribeOn(Schedulers.io()).
observeOn(AndroidSchedulers.mainThread()).
subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError");
}
@Override
public void onNext(String response) {
handleResponse(response);
}
});
}
}).subscribe();
}
public void stopPolling() {
if (!subscriber.isUnsubscribed()) {
subscriber.unsubscribe();
}
}
private Observable<Param> doPolling() {
return Observable.create(new Observable.OnSubscribe<Param>() {
@Override
public void call(Subscriber<? super Param> subscriber) {
//do work
subscriber.onNext(response);
subscriber.onCompleted();
}
});
}
在Activity的生命周期里分別調(diào)用start和stop方法,解除輪詢綁定,避免內(nèi)存泄漏。
其它簡(jiǎn)單的輪詢方法還有利用handler的postDelay機(jī)制實(shí)現(xiàn)
@Override
public void handleMsg(Message msg) {
switch (msg.what) {
case MSG_POLLING:
doPolling(false);
break;
...
...
}
}
private void doPolling(Boolean isFirst) {
if(isFirst) {
mHandler.removeMessages(MSG_POLLING);
mHandler.sendEmptyMessageDelayed(MSG_POLLING, POLLING_INTERVAL);
return;
}
doWork(); //asyn network
mHandler.sendEmptyMessageDelayed(MSG_POLLING, POLLING_INTERVAL);
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android?Jetpack結(jié)構(gòu)運(yùn)用Compose實(shí)現(xiàn)微博長(zhǎng)按點(diǎn)贊彩虹效果
Compose在動(dòng)畫方面下足了功夫,提供了豐富的API。但也正由于API種類繁多,如果想一氣兒學(xué)下來,最終可能會(huì)消化不良,導(dǎo)致似懂非懂。結(jié)合例子學(xué)習(xí)是一個(gè)不錯(cuò)的方法,本文就帶大家邊學(xué)邊做,通過實(shí)現(xiàn)一個(gè)微博長(zhǎng)按點(diǎn)贊的動(dòng)畫效果,學(xué)習(xí)了解Compose動(dòng)畫的常見思路和開發(fā)技巧2022-07-07
Android CountDownTimer實(shí)現(xiàn)倒計(jì)時(shí)器
這篇文章主要為大家詳細(xì)介紹了Android CountDownTimer實(shí)現(xiàn)倒計(jì)時(shí)效果的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
Android Fragment實(shí)現(xiàn)列表和內(nèi)容聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了Android Fragment實(shí)現(xiàn)列表和內(nèi)容聯(lián)動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
Android開發(fā)導(dǎo)入項(xiàng)目報(bào)錯(cuò)Ignoring InnerClasses attribute for an anonym
今天小編就為大家分享一篇關(guān)于Android開發(fā)導(dǎo)入項(xiàng)目報(bào)錯(cuò)Ignoring InnerClasses attribute for an anonymous inner class的解決辦法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12
使用Android自定義控件實(shí)現(xiàn)滑動(dòng)解鎖九宮格
最近由于Android項(xiàng)目需要,要求做一個(gè)類似于支付寶的九宮格解鎖組件,下面小編給大家分享了具體實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-10-10
Android中butterknife的使用與自動(dòng)化查找組件插件詳解
這篇文章主要給大家介紹了關(guān)于Android中butterknife的使用與自動(dòng)化查找組件插件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Android Jetpack導(dǎo)航組件Navigation創(chuàng)建使用詳解
這篇文章主要為大家介紹了Android Jetpack導(dǎo)航組件Navigation創(chuàng)建及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11

