kotlin - 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()
在加载的视图上直接调用,但我想重复一下。
非常感谢任何建议。谢谢
解决方案
抱歉,我做了一些研究,结果发现有一个命令scheduleAtFixedRate
,所以在实施之后,它似乎可以正常工作。
val funtimer: Timer = Timer()
funtimer.scheduleAtFixedRate(
timerTask()
{
jsonParse()
}, 5000, 5000)
RecyclerView
对于需要重新加载计时器的人很有用。
如果有人认为有更好的方法,请随时发表评论或回答。谢谢
推荐阅读
- angular - 自定义结构指令语法“as”不起作用
- c# - Visual Studio Web 部署不会在发布时修改连接字符串
- unit-testing - npm 失败,错误代码:1 在 azure devops 测试管道中
- python - 如何在 matplotlib 中的时间序列图上绘制水平条
- javascript - 如何使用输入框更改 SVG 路径的笔画宽度
- python-3.x - 在 Amazon Lambda 中调用 Azure 库
- oracle-sqldeveloper - 有没有办法保护 SQL 语句不被更改,同时仍然允许该人执行该语句?
- sql-server - 如何将 Orion 上下文代理与 SQL Server 连接
- android - 将 Firebase 依赖项添加到 Android 项目的 buildSrc 会中断构建
- c# - 无法从代理卸载动态代码覆盖工具