使用Timer代替Handler
2016-09-06 16:27
405 查看
使用Timer代替Handler
因为最近在使用RxJava 所以将自己所学到的一些小知识拿来和大家分享:以前我们使用延时操作的时候很多人都在使用Handler
但是这样的点有可能引起内存泄露。一般推荐的都是使用static的handler,并且使用软引用,控制handler的消息处理
private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); //执行代码 } } mHandler.sendEmptyMessageDelayed(1, 10*1000);
以上方法在使用上并不方便,而且如果代码写得不好可读性并不好使用不当可能引起其他问题。
今天向大家推荐RxJava的timer操作符
使用方法如下:
Observable.timer(500, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread()).subscribe(new Action1<Long>() { @Override public void call(Long aLong) { if (getActivity() == null || getActivity().isFinishing()) { return; } //执行的代码 } }, new Action1<Throwable>() { @Override public void call(Throwable throwable) { //异常处理 } });
延时操作时我们是可以通过timer来指定执行线程 以上代码是在UI线程里执行,大家也可以通过
Schedulers来选择其他线程。
相关文章推荐
- 利用ffmpeg打造播放器直播观看公网rtmp1s延时极致优化
- 批处理 延时不完全总结
- 批处理bat 延时执行命令的两种方法
- C#中Forms.Timer、Timers.Timer、Threading.Timer的用法分析
- 详解C#中的定时器Timer类及其垃圾回收机制
- C#使用timer实现的简单闹钟程序
- C#中timer定时器用法实例
- C#自定义基于控制台的Timer实例
- 详解Android中Handler的实现原理
- C#中的Timer和DispatcherTimer使用实例
- php实现的Timer页面运行时间监测类
- .NET中的Timer类型用法详解
- jQuery实现鼠标经过事件的延时处理效果
- picLazyLoad 实现图片延时加载(包含背景图片)
- asp.net中Timer无刷新定时器的实现方法
- Android开发笔记之:Handler Runnable与Thread的区别详解
- 学习Android Handler消息传递机制
- Android App中用Handler实现ViewPager页面的自动切换
- C#实现延时并自动关闭MessageBox的方法
- .NET Framework中定时器timer的单线程与多线程使用讲解