RxJava2 / RxAndroid2操作符interval:每隔若干时间发射信号

简介: RxJava2 / RxAndroid2操作符interval:每隔若干时间发射信号Interval每隔一定时间发射一个整数,从0开始,例如:package zhangphil.
RxJava2 / RxAndroid2操作符interval:每隔若干时间发射信号


Interval每隔一定时间发射一个整数,从0开始,例如:
package zhangphil.app;

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

import java.util.concurrent.TimeUnit;

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


public class MainActivity extends AppCompatActivity {
    private final String TAG = getClass().getSimpleName();
    private CompositeDisposable mCompositeDisposable = new CompositeDisposable();
    ;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        test();
    }

    private void test() {
        mCompositeDisposable.add(Observable.interval(0, 5, TimeUnit.SECONDS)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeWith(getObserver(1)));
    }

    private DisposableObserver getObserver(final int id) {
        DisposableObserver disposableObserver = new DisposableObserver<Object>() {
            @Override
            public void onNext(Object o) {
                Log.d(id + TAG, "#####开始#####");
                Log.d(id + "数据", String.valueOf(o));
                Log.d(id + TAG, "#####结束#####");
            }

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

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

        return disposableObserver;
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        // 如果退出程序,就清除后台任务
        mCompositeDisposable.clear();
    }
}



代码输出:

05-18 17:10:58.436 8466-8466/? D/1MainActivity: #####开始#####
05-18 17:10:58.436 8466-8466/? D/1数据: 0
05-18 17:10:58.436 8466-8466/? D/1MainActivity: #####结束#####
05-18 17:10:58.439 8466-8466/? W/Activity: AppLock checkAppLockState locked:false verifying:false pkgName = zhangphil.app isInMultiWindowMode:false
05-18 17:10:58.457 8466-8502/? I/Adreno: QUALCOMM build                   : 5451aae, I25dc76dc3f
                                         Build Date                       : 01/02/17
                                         OpenGL ES Shader Compiler Version: XE031.09.00.03
                                         Local Branch                     : 
                                         Remote Branch                    : refs/tags/AU_LINUX_ANDROID_LA.UM.5.5.R1.07.00.00.269.013
                                         Remote Branch                    : NONE
                                         Reconstruct Branch               : NOTHING
05-18 17:10:58.478 8466-8502/? I/OpenGLRenderer: Initialized EGL, version 1.4
05-18 17:10:58.478 8466-8502/? D/OpenGLRenderer: Swap behavior 1
05-18 17:10:58.482 8466-8466/? D/ViewRootImpl@15edd34[MainActivity]: MSG_RESIZED_REPORT: ci=Rect(0, 81 - 0, 0) vi=Rect(0, 81 - 0, 0) or=1
05-18 17:10:58.482 8466-8466/? D/ViewRootImpl@15edd34[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 1
05-18 17:10:58.482 8466-8466/? I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
05-18 17:10:58.485 8466-8502/? D/libGLESv1: STS_GLApi : DTS is not allowed for Package : zhangphil.app
05-18 17:10:58.488 8466-8479/? D/InputTransport: Input channel constructed: fd=73
05-18 17:11:03.321 8466-8466/zhangphil.app D/1MainActivity: #####开始#####
05-18 17:11:03.321 8466-8466/zhangphil.app D/1数据: 1
05-18 17:11:03.321 8466-8466/zhangphil.app D/1MainActivity: #####结束#####
05-18 17:11:08.321 8466-8466/zhangphil.app D/1MainActivity: #####开始#####
05-18 17:11:08.321 8466-8466/zhangphil.app D/1数据: 2
05-18 17:11:08.322 8466-8466/zhangphil.app D/1MainActivity: #####结束#####
05-18 17:11:13.321 8466-8466/zhangphil.app D/1MainActivity: #####开始#####
05-18 17:11:13.321 8466-8466/zhangphil.app D/1数据: 3
05-18 17:11:13.322 8466-8466/zhangphil.app D/1MainActivity: #####结束#####
05-18 17:11:18.321 8466-8466/zhangphil.app D/1MainActivity: #####开始#####
05-18 17:11:18.321 8466-8466/zhangphil.app D/1数据: 4
05-18 17:11:18.321 8466-8466/zhangphil.app D/1MainActivity: #####结束#####
05-18 17:11:23.321 8466-8466/zhangphil.app D/1MainActivity: #####开始#####
05-18 17:11:23.322 8466-8466/zhangphil.app D/1数据: 5
05-18 17:11:23.322 8466-8466/zhangphil.app D/1MainActivity: #####结束#####
05-18 17:11:28.321 8466-8466/zhangphil.app D/1MainActivity: #####开始#####
05-18 17:11:28.322 8466-8466/zhangphil.app D/1数据: 6
05-18 17:11:28.322 8466-8466/zhangphil.app D/1MainActivity: #####结束#####


相关文章
|
12月前
|
存储 消息中间件 资源调度
C++ 多线程之初识多线程
这篇文章介绍了C++多线程的基本概念,包括进程和线程的定义、并发的实现方式,以及如何在C++中创建和管理线程,包括使用`std::thread`库、线程的join和detach方法,并通过示例代码展示了如何创建和使用多线程。
143 1
C++ 多线程之初识多线程
|
存储 Java Android开发
Android系统 设置第三方应用为默认Launcher实现和原理分析
Android系统 设置第三方应用为默认Launcher实现和原理分析
1891 0
|
Android开发 开发者 索引
Android实战经验之如何使用DiffUtil提升RecyclerView的刷新性能
本文介绍如何使用 `DiffUtil` 实现 `RecyclerView` 数据集的高效更新,避免不必要的全局刷新,尤其适用于处理大量数据场景。通过定义 `DiffUtil.Callback`、计算差异并应用到适配器,可以显著提升性能。同时,文章还列举了常见错误及原因,帮助开发者避免陷阱。
927 9
7. 成功解决:io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1
今天使用 Netty 搭建一个项目,接收报文时提示如下错误:`io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1`
1913 1
|
Ubuntu Linux Shell
Android-NDK-clang 编译 FFmpeg
Android-NDK-clang 编译 FFmpeg
581 0
|
缓存 fastjson Java
FastJson - JSONPath 使用
FastJson - JSONPath 使用
1824 0
|
机器学习/深度学习 安全 数据挖掘
电商API接口的最佳实践与案例分析
随着电商行业的快速发展,越来越多的企业开始将业务拓展到线上。为了提高用户体验和运营效率,电商平台提供了丰富的API接口,方便商家进行商品管理、订单处理、营销活动等操作。本文将介绍电商API接口的最佳实践和案例分析。
|
存储 安全 Java
这17个小工具,让我的开发效率提升了50%
在java的庞大体系中,其实有很多不错的小工具,也就是我们平常说的:轮子。 今天我决定把一些压箱底的小工具,分享给大家,希望对你有所帮助。
306 0
|
网络协议 网络架构
计算机网络概论和数据通信基础(上)
计算机网络概论和数据通信基础
166 0
layui三级导航菜单
layui三级导航菜单
247 0