You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio/Kotlin:如何每60秒更新LiveData文本变量

实现LiveData每60秒自动更新

可以借助Fragment的lifecycleScope启动协程来实现定时更新,同时协程会自动跟随Fragment生命周期销毁任务,避免内存泄漏。修改后的代码如下:

@RequiresApi(Build.VERSION_CODES.O)
fun get_date_to_new_year(): String {
    val currentDate = LocalDateTime.now()
    val needDateToNewYear = LocalDateTime.of(2023, 1, 1, 0, 0, 0)
    val dateToNewYear = Duration.between(currentDate, needDateToNewYear)
    return "До нового года " + dateToNewYear.toDays().toString()  + " дней\nили " +
            dateToNewYear.toHours().toString() + " часов\nили " + dateToNewYear.toMinutes().toString()  + " минут\nили " +
            dateToNewYear.seconds.toString() + " секунд"
}

private var _text = MutableLiveData<String>()
val text: LiveData<String> = _text

@RequiresApi(Build.VERSION_CODES.O)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    // 初始赋值
    _text.value = get_date_to_new_year()
    
    // 启动定时更新协程
    viewLifecycleOwner.lifecycleScope.launch {
        while (true) {
            delay(60000) // 60秒延迟
            _text.value = get_date_to_new_year()
        }
    }
}

关键说明

  • 使用viewLifecycleOwner.lifecycleScope:协程会在Fragment的View销毁时自动取消,防止内存泄漏。
  • while(true)配合delay(60000):实现每隔60秒执行一次更新逻辑。
  • 调整_text和text的初始化位置:避免给不需要API限制的变量添加@RequiresApi注解,只有调用目标函数时才需要该注解。

内容的提问来源于stack exchange,提问作者TASK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:45:31