我正在使用 Firebase 实时数据库编写 Kotlin Android 应用程序,我想在特定时间段(10 秒)内而不是实时更新 GPS 数据。Timer()
和都试过Handler()
,但更新时间不准确,有时不到10秒。
我读了这个,但它没有帮助。
val myTimer = Timer()
val task = object : TimerTask() {
override fun run() {
val database = FirebaseDatabase.getInstance()
val gps = GPS(latFirebase, longFirebase)
val mAuth = FirebaseAuth.getInstance()
val currentUser = mAuth!!.currentUser
val userID = currentUser!!.uid
val ref = database.getReference("gps_data/$userID")
ref.setValue(gps)
}
}
myTimer.schedule(task, 100, 10000)
不幸的是,Firebase 实时数据库中没有内置每十秒自动递增的操作。如果您需要该功能,则必须从客户端应用程序执行此操作,使用如下所示的处理程序:
val handler = Handler()
val timer = Timer()
val doAsynchronousTask = object : TimerTask() {
override fun run() {
handler.post {
try {
//Your function call
} catch (e: Exception) {
// TODO Auto-generated catch block
}
}
}
}
timer.schedule(doAsynchronousTask, 0, 10000)
或者从服务器端环境(例如Cloud Functions )执行此操作。由于 Cloud Functions 仅响应触发器而运行,并且还没有内置的时间触发器,因此您可以使用 cron-job.org 之类的服务来模拟它。为此,请参阅这篇文章中Frank van Puffelen 的回答。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句