王學崗RxJava(十二)————————interval,timer,取消Observable
阿新 • • 發佈:2019-02-14
package com.example.acer.rxjavatest;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import java.util.concurrent.TimeUnit;
import rx.Observable;
import rx.Observer;
public class MainActivity extends AppCompatActivity {
private Observable<Long> mObservable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//兩個引數:
//第一個引數:代表兩個訊息傳送之間的間隔時間(輪訓時間)
//第二個引數:時間單位:(毫秒,秒,分鐘) TimeUtil時間工具類
mObservable = Observable.interval(2, TimeUnit.SECONDS);
}
//按鈕的單擊事件
public void click(View v) {
//輪訓通知觀察者
mObservable.subscribe(new Observer<Long>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Long aLong) {
Log.i("zhang_xin", aLong + "");
}
});
}
}
看下列印結果,
大家看這裡的列印結果可能看不出來,這個輪訓是無限次輪訓,我在寫這篇部落格的時候,剛才執行的程式已經輪訓到504了!
如何指定輪訓的次數,我還沒搞定。
這個方法時八秒後輪訓,輪訓的間隔時間是一秒
mObservable = Observable.interval(8,1,TimeUnit.SECONDS);
輪訓一次的寫法
package com.example.acer.rxjavatest;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import java.util.concurrent.TimeUnit;
import rx.Observable;
import rx.Observer;
public class MainActivity extends AppCompatActivity {
private Observable<Long> mObservable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//兩個引數:
//第一個引數:代表兩個訊息傳送之間的間隔時間(輪訓時間)
//第二個引數:輪訓的次數
//第三引數:時間單位:(毫秒,秒,分鐘) TimeUtil時間工具類
mObservable = Observable.timer(8 ,TimeUnit.SECONDS);
}
//按鈕的單擊事件
public void click(View v) {
mObservable.subscribe(new Observer<Long>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Long aLong) {
Log.i("zhang_xin", aLong + "");
}
});
}
}
//取消訂閱的方法
package com.example.acer.rxjavatest;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import java.util.concurrent.TimeUnit;
import rx.Observable;
import rx.Observer;
import rx.Subscription;
public class MainActivity extends AppCompatActivity {
private Observable<Long> mObservable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//兩個引數:
//第一個引數:代表兩個訊息傳送之間的間隔時間(輪訓時間)
//第二個引數:輪訓的次數
//第三引數:時間單位:(毫秒,秒,分鐘) TimeUtil時間工具類
mObservable = Observable.interval(8,1,TimeUnit.SECONDS);
}
//按鈕的單擊事件
public void click(View v) {
Subscription ms= mObservable.subscribe(new Observer<Long>() {
@Override
public void onCompleted() {
Log.i("zhang_xin", " onCompleted");
}
@Override
public void onError(Throwable e) {
Log.i("zhang_xin",e + "");
}
@Override
public void onNext(Long aLong) {
Log.i("zhang_xin", aLong + " n");
}
});
//取消訂閱
ms.isUnsubscribed();
}
}