首页 > 解决方案 > 使用 kotlin 在特定时期更新 firebase 实时数据库

问题描述

我正在使用 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)

标签: androidfirebasefirebase-realtime-databasekotlin

解决方案


不幸的是,Firebase 实时数据库中没有内置每 10 秒自动增量的操作。如果您需要该功能,则必须从客户端应用程序执行此操作,使用如下处理程序:

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 的回答。


推荐阅读