我正在研究React Native组件,该组件应在白天更改时自行更新,即使用户未与视图进行交互也是如此。
setInterval
是解决这个问题的唯一方法吗?如果我在setTimeout
中调用viewDidLoad
指定直到第二天的ms数,那么如果应用暂停,则间隔是否不准确?或者,我可以运行一个周期性的计时器,但是我需要给它一个短暂的间隔,以便在白天变化时没有明显的延迟 - 看起来非常低效。
我错过了什么吗?
答案 0 :(得分:4)
我认为这更像是一个普遍的应用程序架构问题。最简单的答案是你应该以秒为单位获取当前时间(new Date().getTime()
),确定第二天之前的秒数,并为该数字设置一个计时器。
但是,正如您所提到的,一旦应用程序被杀死,该计时器将不再准确。
您应该使用AppStateIOS来监听应用程序的后台和前景。发送到后台后,清除计时器。在被带到前台后,再次运行原始计算并生成一个新计时器。
不幸的是,Android上没有相同的功能。
答案 1 :(得分:0)
您可以使用 react-native-midnight,它订阅本机 API 并在一天因时区更改或超过午夜阈值而发生变化时触发事件侦听器。