共计 1707 个字符,预计需要花费 5 分钟才能阅读完成。
嘿!各位老铁,大家好啊,好久没更新了,次要也不晓得写些什么,也不晓得别的博主是如何创作的,但对于我来说,原创的日更真的很难,不过老铁们,莫放心,做不到日更,但断断续续的更还是能做到的,也心愿本人的一些浅显的见识,可能给大家带来些许帮忙,明天呢,给大家带来的是一个十分好用的计时工具,真的十分好用,用过之后,你会发现,延时和定时,真的从未如此简略。
在讲述之前,不晓得各位老铁在平时的开发中,遇到定时和延时相干的性能,都是怎么解决的,古老的 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 库,大家敬请期待!