Rxjava timer
转载自: https://blog.csdn.net/lihenair/article/details/50386442
最近项目需要引入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的Observable.timer替代传统Handler实现延迟任务。通过简单示例展示新方法不仅简洁,还能有效避免内存泄漏等问题。


1523

被折叠的 条评论
为什么被折叠?



