android定时发送请求,Android异步、延迟和定时任务的简易用法

本文介绍了如何使用RxJava2在Android中实现异步任务、延迟操作和定时任务,包括创建子线程、使用Scheduler、避免内存泄漏等问题,并通过示例代码展示了具体用法。
摘要由CSDN通过智能技术生成

cee49d6d817f

程序猿的要求不高

异步多线程

延迟触发

循环定时触发

一、前言

项目开发中一定会用到网络请求,文件读写,开启子线程进行耗时操作,延迟返回或关闭提示框,轮询接口获取处理结果,子线程发送内容到主线程更新界面等等。碰到这些问题或需求的时候,每位程序猿都会使用自己喜欢或习惯的用法来实现或界面问题。当然结果是功能完成了或问题修复了。但是代码风格的差异,使用时考虑不全,使用方法不是最优,等等多多少少存在一些瑕疵。例如:

阿里的java编程规范不推荐显式使用Thread

直接使用AsyncTask存在内存泄露或者weak用法导致空指针的问题

使用Handler进行更新界面的复杂操作

使用postDelayed()进行延迟操作不能在子线程中使用

使用TimerTask进行轮询时复杂的更新页面

综上,特别想在代码上统一用法,并且是简单又安全,而且性能最优。所以想到RxJava是不是可以来实现这个愿望。尝试和研究中记录的Demo,有使用错误或更好的方案,请多指教。

二、 铺垫

RxJava集成

项目中先集成RxJava库

api 'io.reactivex.rxjava2:rxandroid:2.1.0'

api 'io.reactivex.rxjava2:rxjava:2.2.5'

api 'com.squareup.retrofit2:retrofit:2.5.0'

api 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'

api 'com.squareup.retrofit2:converter-gson:2.5.0'

关于RxJava的方法介绍或基础使用,请参考RxJava2在Android中的使用。

RxJava多线程

使用RxJava进行多线程操作的原理、用法及其他,请参考在 Andoid 中如何使用 RxJava 2 进行多线程编程?.

Scheduler

针对多线程的操作,Schedulers的参数了解,请参考我所理解的RxJava——上手其实很简单(三);

三、异步

最直接的用法就是new Thread()创建一个子线程,然后用EventMessage或Handler发送Message来更新页面。更好一点的方法是ExecutorService创建线程池,统一管理线程并且复用线程以及控制线程的总数,但是需要再花点时间维护和优化。但是不建议为每一个Activity或fragment创建一个线程池,从性能和线程复用率上没有必要性。

private void testCreate() {

Observable.create(new ObservableOnSubscribe() {

@Override

public void subscribe(ObservableEmitter emitter) throws Ex

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值