一、定义接口
为了把循环执行的任务放在工具类外面,因此定义一个接口,实现接口回调。其次为了让接口回调更加简洁,这里使用java语言定义接口(kotlin疑似没那么好用)
public interface ActionCallback<T,V> {
void actionDo(T TAG,V VALUE);
}
二、循环执行的计时器
import android.util.Log
import java.util.*
import kotlin.concurrent.schedule
/**
* 循环执行发送操作
* @auther 绝命三郎
*/
class CycleSender {
private var timer:Timer=Timer()
private var runningTag=false
companion object {
val INSTANCE by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
CycleSender()
}
}
//启动循环
fun start(callback : ActionCallback<String,String>){
if (!runningTag){
runningTag=true
timer=Timer()
timer.schedule(0, 100) {
callback.actionDo("TAG","VALUE")
}
}
}
//暂停循环
fun stop(){
if (runningTag) {
runningTag=false
timer.cancel()
}
}
}
三、使用方法
//周期循环请求0x100数据
CycleSender.INSTANCE.start(ActionCallback {
tag, value ->
//执行周期循环的任务
})