您的位置:首页 > 移动开发 > Android开发

RxJava/RxAndroid:timer(long delay, TimeUnit unit)

2018-02-08 14:21 405 查看
RxJava/RxAndroid:timer(long delay, TimeUnit unit)

timer起到定时器的作用,本例使用timer延迟3秒执行一个输出任务:
package com.example.fly.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import java.util.concurrent.TimeUnit;

import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.observers.DisposableObserver;
import io.reactivex.schedulers.Schedulers;

public class MainActivity extends AppCompatActivity {

private final String TAG = "输出";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Log.d(TAG, "" + System.currentTimeMillis());
Observable.timer(3, TimeUnit.SECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(mDisposableObserver);
}

private DisposableObserver<Long> mDisposableObserver = new DisposableObserver<Long>() {

@Override
public void onNext(Long aLong) {
Log.d(TAG, "onNext:" + aLong);
Log.d(TAG, "" + System.currentTimeMillis());
}

@Override
public void onComplete() {
Log.d(TAG, "onComplete");
}

@Override
public void onError(Throwable e) {
Log.e(TAG, e.toString(), e);
}
};
}

输出:02-08 14:13:14.582 18410-18410/com.example.fly.myapplication D/输出: 1518070394582
02-08 14:13:17.661 18410-18410/com.example.fly.myapplication D/输出: onNext:0
02-08 14:13:17.661 18410-18410/com.example.fly.myapplication D/输出: 1518070397661
02-08 14:13:17.661 18410-18410/com.example.fly.myapplication D/输出: onComplete
注意到第一次打印系统时间是:02-08 14:13:14第二次打印出来的时间是:02-08 14:13:17。即延迟3秒。
timer不是周期性的执行任务,只是定时在某一个时间点发射一个事件,这和操作符interval周期性执行任务不同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: