嘿!各位老铁,大家好啊,好久没更新了,次要也不晓得写些什么,也不晓得别的博主是如何创作的,但对于我来说,原创的日更真的很难,不过老铁们,莫放心,做不到日更,但断断续续的更还是能做到的,也心愿本人的一些浅显的见识,可能给大家带来些许帮忙,明天呢,给大家带来的是一个十分好用的计时工具,真的十分好用,用过之后,你会发现,延时和定时,真的从未如此简略。

在讲述之前,不晓得各位老铁在平时的开发中,遇到定时和延时相干的性能,都是怎么解决的,古老的Handler还是Timer,无论哪种形式,尽管都可能实现咱们想要的成果,但仿佛都存在着肯定的代码量和生命周期的思考,有没有一种形式,既调用简略,又能不关注生命周期呢?

理解作者的老铁都晓得,已经的作者在Web的陆地里也飞翔了许久,粗浅的晓得Js里的定时和延时,是那么的简略,我这里贴出来,大家能够看一看。

setTimeout(function (){            //延时3秒后操作        },3000)setInterval(function (){            //定时,一秒执行一次        },1000)

Js中的延时和定时,老铁们,看后怎么样,简略吧,在Android中,咱们是否也像前端这样操作呢,一个字,能,必须能。

通过对Kotlin中coroutines里的ticker再次封装,应用LifecycleOwner与生命周期进行绑定,一个简略的计时工具就诞生了。目前曾经开源,须要的老铁能够下载。

地址如下:

https://github.com/AbnerMing8...

上面讲一下具体的应用形式,老铁们也感触下封装的是否简略,目前曾经上传了近程Maven,大家能够依赖应用。

1、在你的根我的项目下的build.gradle文件下,引入maven。

allprojects {    repositories {        maven { url "https://gitee.com/AbnerAndroid/almighty/raw/master" }    }}

2、在你须要应用的Module中build.gradle文件下,引入依赖。

dependencies {    implementation 'com.vip:time:1.0.0'}

依赖引入之后,咱们就能够理论的操作了,来,小试牛刀一把,和前端调用根本相似,比方一个常见的倒计时,咱们就能够如下操作。

setTimeOut(5) {     //倒计时实现}

没看错,调用就是这么简略,参数为须要倒计时的工夫,Long类型,是不是用法能够和Web前端相媲美,这个办法,在倒计时中,没有返回倒计时的工夫值,只会在定义的工夫后进行返回。

有的老铁问了,在倒计时的时候,我须要拿到返回的工夫值,怎么搞?必须能搞,大家能够应用上面的办法,参数呢,有两个,第一个参数为倒计时或者延时的时长,第二个参数是距离时长,默认不填是距离1秒,通过是否等于end,来判断是否倒计时实现。

setTimeDown(5) {    if (it == end) {       //倒计时实现    } else {        val t= it.toString()//倒计时 工夫值    }}

同样的,定时也是十分的简略,比方我想要实现一个有限定时器,就能够通过上面的办法,参数只有一个,就是工夫距离,也就是多少秒轮询一次。

setIntervalWireless(1) {      val t = it.toString()//定时 工夫值   }

有的老铁问了,理论的业务中,除了有限的定时之外,还有一些是无限的定时,比方1分钟或者10分钟,这种无限的工夫内采取定时,如何操作呢?也是十分的简略,能够应用上面的形式,两个参数,参数1为定时须要的工夫, 参数2是工夫距离,多久轮询一次。

setInterval(10, 2) {  if (it == end) {         //定时实现    } else {       val t = it.toString()//定时 工夫值    }}

提供的这四个办法,基本上能够满足理论的业务需要,能够在Activity或者Fragment里间接调用,因为要和生命周期进行绑定,如果在View或者工具类里进行应用,能够把context转为Activity后再进行调用即可。

这篇没有特地难的,就到这里吧,下篇文章介绍一下,封装的另一个库,MVVM的Base库,大家敬请期待!