当前位置: 首页 > news >正文

网站开发原型工具携程旅行网官网

网站开发原型工具,携程旅行网官网,网站建站套餐,360指数查询工具满足延迟执行、立即执行,每次任务间隔时长,总时长的任务 使用1 class TimeViewModel:Viewmodel(){//测试延迟5秒开始执行任务,然后每隔1秒执行1次,总执行时间60秒fun testTime(){var startTime System.currentTimeMillis()log(…

满足延迟执行、立即执行,每次任务间隔时长,总时长的任务

使用1

class TimeViewModel:Viewmodel(){//测试延迟5秒开始执行任务,然后每隔1秒执行1次,总执行时间60秒fun testTime(){var startTime = System.currentTimeMillis()log("执行 开始 startTime:${startTime}")val job =  viewModelScope.startTime(interval = 5000,duration = 1000,totalTime = 60*1000,onNext = {count->log("执行次数:${count}")},onFinish = {log("执行结束")log("执行 结束 总耗时:${System.currentTimeMillis() - startTime}")})viewModelScope.launch {delay(20000)log("模拟执行手动结束")job.cancel()}}}

使用2

 //立即执行任务,然后每隔1秒执行1次,总执行时间60秒
val job =  viewModelScope.startTime(duration = 1000,totalTime = 60*1000,onNext = {count->log("执行次数:${count}")},onFinish = {log("执行结束")log("执行 结束 总耗时:${System.currentTimeMillis() - startTime}")})

 使用3

 /*立即执行任务,然后每间隔1秒执行1次,要么手动调用 job.cancel(),要么等所在协程生命周期结束,才会结束,但不会回调 onFinish 
*/val job =  viewModelScope.startTime(duration = 1000,onNext = {count->log("执行次数:${count}")},onFinish = {log("执行结束")log("执行 结束 总耗时:${System.currentTimeMillis() - startTime}")})

使用4

  /*延迟5秒再执行任务,然后每间隔1秒执行1次,要么手动调用 job.cancel(),要么等所在协程生命周期结束,才会结束,但不会回调 onFinish 
*/ val job =  viewModelScope.startTime(interval = 5000,duration = 1000,onNext = {count->log("执行次数:${count}")},onFinish = {log("执行结束")log("执行 结束 总耗时:${System.currentTimeMillis() - startTime}")})

 //代码封装 

/*** @param interval 单位毫秒,用于定时器延迟时间开启,例如:interval = 5000,则是5秒后才会开始倒计时* @param duration 单位毫秒,用户每次定时任务间隔时长执行1次,例如 duration = 1000,则每间隔1秒执行1次* @param totalTime 单位毫秒,用于定时器执行的总时长,*        如果为空的话,会一直在运行,直到手动调用cancel 方法,或者所在协程声明周期结束 而结束* @onNext(count) ,返回每次执行的次数* @onFinish() 任务正常执行完成*/fun CoroutineScope.startTime(interval:Long? = 0,duration:Long,totalTime:Long? = null,onNext:(Int)->Unit,onFinish:(()->Unit)? = null):Job{if (duration<=0){throw IllegalArgumentException("间隔时间必须大于0")}return this.launch {interval?.let { _interval->if (_interval>0){delay(_interval)}}var isStart = truevar runAllTotalTime:Long = 0var count = 0while (isStart){if (totalTime!= null && totalTime>0 && runAllTotalTime>= totalTime){isStart = falseonFinish?.invoke()}else{delay(duration)runAllTotalTime+=durationcount+=1onNext.invoke(count)}}}}

http://www.yayakq.cn/news/21695/

相关文章:

  • 做犯法任务的网站阿里云邮箱企业版
  • 个人备案经营网站备案实业公司网站模板
  • 网站开发 定制 合同 模板网站制作软件 aws
  • 企业网站优化服务主要围绕哪些要素百度域名登录
  • 房产网站推广方法莱芜网站优化公司
  • 网站建设销售需要懂的知识贵州网站优化
  • 想在拼购网站做产品wordpress托管平台
  • 网站如何做水晶按钮苏州企业网站建设定制
  • 做网站 先备案么宁波网站建设招商加盟
  • 高端网站案例欣赏qq推广的特点
  • 江苏外贸网站建设推广建设银行app忘记登录密码
  • 设计一个网站要多少钱上海网站开发设计
  • 唐山网站建设|唐山网站制作|公司建站666起|唐山红城网络网站前端静态模板下载
  • 如何建立自己免费网站跨界营销案例
  • 搜狗收录网站全球华设计
  • 备案 网站名称什么用婚纱照
  • 浏阳做网站wordpress更换域名sql语句
  • 怎么自己在百度上做网站陕西电商网站建设
  • 卖网站链接google网站地图
  • 互联网门户网站创意设计生活用品
  • 网站是如何制作的天河网站建设制作
  • 湖北省住房城乡建设厅网站有哪些外国网站做精油的
  • 惠济区城乡建设局网站php网页制作实例
  • 网站备案号怎么添加手机网站后台管理系统
  • 辽宁城乡建设部网站建设网站时 首先要解决两个问题 一是什么
  • 北京网站的优化wordpress默认账号密码忘记
  • 成都高端网站建设公司哪家好服务商英文
  • ppt下一页宁波seo关键词费用
  • 找专业做网站品牌活动策划方案
  • 班级网站成品征信报告