我是靠谱客的博主 忧心雨,最近开发中收集的这篇文章主要介绍kotlin使用timerTask{}执行协程任务失效问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天在做需求在androidServer里做一个通知,本来想的用timerTask{}+协程来做,结果发现一直不执行代码,debug到此处也莫名奇妙跳过。之后发现问题,但是没解决,总结如下:

service代码

 val scheduledThreadPool = Executors.newScheduledThreadPool(2)//一个线程的并行任务线程池 。。
    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        startTimer()
        return START_REDELIVER_INTENT
    }
 /**
     * 开启定时器 轮训执行任务
     */
    private fun startTimer(){

        val task2 = object:TimerTask(){
            override fun run() {
                Log.i(TAG,"协程前  task2" )
                coroutine(//耗时cao
                    {NetWorkOperating().initHttpUrlConnection(centerHospitalUidParameter, NetWorkOperating.GET_UN_REPORT_COUNT)}
                ){
                    Log.i(TAG,"我再执行 $unReportQuantity  task2" )
            
                }
            }
        }

        val task = timerTask {
            Log.i(TAG,"协程前   task" )
            //获取未查阅报告数量
            coroutine(//耗时操作
                {NetWorkOperating().initHttpUrlConnection(centerHospitalUidParameter, NetWorkOperating.GET_UN_REPORT_COUNT)}
            ){
                Log.i(TAG,"我再执行 $unReportQuantity  task1" )
            
            }
        }
        scheduledThreadPool.scheduleWithFixedDelay(task2,1000,10000,TimeUnit.MILLISECONDS)
        scheduledThreadPool.scheduleWithFixedDelay(task,1000,10000,TimeUnit.MILLISECONDS)
    }
上图 task、与task2 其实是一样的  timerTask{}源码如下:



设置封装的协程(从大佬那里cv的,是真滴好用)

    private fun <T> coroutine(block: suspend CoroutineScope.() -> T, uiBlock: suspend (T) -> Unit): Deferred<T> {
        val deferred = async(CommonPool, CoroutineStart.DEFAULT,block)
        launch(UI){
            uiBlock(deferred.await())
        }
        return deferred
    }
执行结果截图:

明显看到 task1只执行了1次。

问题阐述完毕,但是不知道为什么不去执行。有大佬看到解决,请留个言。



最后

以上就是忧心雨为你收集整理的kotlin使用timerTask{}执行协程任务失效问题的全部内容,希望文章能够帮你解决kotlin使用timerTask{}执行协程任务失效问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部