首页 > 解决方案 > Kotlin TimerTask - 如何每 5 秒重复一次任务?

问题描述

我希望每 5 秒刷新一次 RecyclerView,使用来自我的网络服务器 JSON 的最新数据(每次调用都从服务器动态更新)。

虽然计时器工作一次,并在 5 秒后执行呼叫,但它不会重复。

我已将以下内容放在onViewCreated我正在显示数据的片段的覆盖中:

val funtimer: Timer = Timer()
        funtimer.schedule(timerTask(){
            jsonParse()
        }, 5000)

每 5 秒,我希望重复一次jsonParse()通话。

jsonParse()在它自己的公共函数中,它由以下代码组成:

public fun jsonParse(){
        val args = this.arguments 
        val ctuid = args?.get("ctuid").toString()
        val servicedate = args?.get("date").toString()

        val url = "MYJSONSERVER/api/train.php?trainid=$ctuid&date=$servicedate"
        val request = JsonObjectRequest(Request.Method.GET, url, null, {
            response ->try {
            trainList.clear()
            val jsonArray = response.getJSONArray("timetable")
            for (i in 0 until jsonArray.length()) {
                val serviceRow = jsonArray.getJSONObject(i)

                //For simplification, some variables have been redacted
                val booked = serviceRow.getString("booked") 

                trainList.add(Traindata(booked))
            }

            recycleradapter.notifyDataSetChanged()
        } catch (e: JSONException) {
            e.printStackTrace()
            Toast.makeText(requireActivity() , "No Services Found", Toast.LENGTH_SHORT).show()
        }
        }, {
                error ->
            error.printStackTrace()
        })
        requestQueue?.add(request) 

在上下文中,我希望每 5 秒重新加载一次来自服务器的最新数据的 recyclerview,虽然我可以jsonParse()在加载的视图上直接调用,但我想重复一下。

非常感谢任何建议。谢谢

标签: kotlin

解决方案


抱歉,我做了一些研究,结果发现有一个命令scheduleAtFixedRate,所以在实施之后,它似乎可以正常工作。

    val funtimer: Timer = Timer()
    funtimer.scheduleAtFixedRate(
        timerTask()
        {
        jsonParse()
    }, 5000, 5000)

RecyclerView对于需要重新加载计时器的人很有用。

如果有人认为有更好的方法,请随时发表评论或回答。谢谢


推荐阅读