RxJava练习--timer代替Handler

Posted changhaiSmile

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RxJava练习--timer代替Handler相关的知识,希望对你有一定的参考价值。

最近项目需要引入RxJava,需要转换代码思路。 
先在项目中看看哪里能使用这些api,发现有个handler可以被替换,迅速使用。 
原来的代码是这样:
private Handler mHandler = new Handler() 
    @Override
    public void handleMessage(Message msg) 
        super.handleMessage(msg);
        enterApp();
    

mHandler.sendEmptyMessageDelayed(1, 10*1000);

以上代码的逻辑就是等待10秒,进入应用。很简单的逻辑。 
但是这样的点有可能引起内存泄露。一般推荐的都是使用static的handler,并且结合软引用,控制handler的消息处理。 
结合RxJava,发现有一个Observable.timer的api可以实现这个功能,而且不再需要使用handler。 
实现方式如下:
Observable.timer(4, TimeUnit.SECONDS).subscribe(new Action1<Long>() 
            @Override
            public void call(Long aLong) 
                enterApp();
            
        );

很简答的几行代码,就实现了handler的逻辑。 
测试后,与原功能需要一致。 
Observable.timer的解释是:

Timer — create an Observable that emits a single item after a given delay 
Timer — 创建一个Observable,在给定延迟后释放唯一事件 


以上是关于RxJava练习--timer代替Handler的主要内容,如果未能解决你的问题,请参考以下文章

使用 Completable.timer 对 RxJava 进行单元测试

RxJava 创建操作符 timer与interval

android---Timer和Handler

android 定时器(Handler Timer Thread AlarmManager CountDownTimer)

android中的Timer与Handler的比较

115定时器(TimerTask+Timer+Handler)