Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何脱机重置Firebase实时数据库值?_Android_Firebase_Firebase Realtime Database_Android Alarms - Fatal编程技术网

Android 如何脱机重置Firebase实时数据库值?

Android 如何脱机重置Firebase实时数据库值?,android,firebase,firebase-realtime-database,android-alarms,Android,Firebase,Firebase Realtime Database,Android Alarms,在我的Firebase实时数据库中,我希望在每天晚上11:59重置特定值 这是我在main活动中的代码: val dailyCal: Calendar = Calendar.getInstance() dailyCal[Calendar.HOUR_OF_DAY] = 23 dailyCal[Calendar.MINUTE] = 59 dailyCal[Calendar.SECOND] = 59 dailyCal[Calendar.MILLISECOND] = 0 val dailyIntent:

在我的Firebase实时数据库中,我希望在每天晚上11:59重置特定值

这是我在
main活动中的代码:

val dailyCal: Calendar = Calendar.getInstance()
dailyCal[Calendar.HOUR_OF_DAY] = 23
dailyCal[Calendar.MINUTE] = 59
dailyCal[Calendar.SECOND] = 59
dailyCal[Calendar.MILLISECOND] = 0
val dailyIntent: PendingIntent = PendingIntent.getBroadcast(
    this@MainActivity,
    0,
    Intent(this, DailyBroadcastReceiver::class.java),
    PendingIntent.FLAG_UPDATE_CURRENT
)
val dailyAm: AlarmManager = this.getSystemService(ALARM_SERVICE) as AlarmManager
dailyAm.setInexactRepeating(
    AlarmManager.RTC,
    dailyCal.timeInMillis,
    AlarmManager.INTERVAL_DAY,
    dailyIntent
)
这是我在我的
DailyBroadcastReceiver
中的
onReceive
函数中设置的值:

if (intent.action != Intent.ACTION_BOOT_COMPLETED) {
    val userInfo = database.getReference("users").child(auth.currentUser!!.uid).child("daily")
    userInfo.setValue(0)
}
到目前为止,如果用户在应用程序上,或者如果用户的手机处于打开状态,并且他们尽管不在应用程序本身上,但仍然连接到互联网,则此功能仍然有效


如果用户未连接到internet,或者即使他们的设备未打开,如何使我的应用程序在Firebase实时数据库中重置特定值?

由于您提到的原因,无法可靠地使用用户的移动设备安排工作。事实上,该设备可能已关闭,或者可能没有互联网连接,或者用户甚至可能正在使用多个设备,每个设备在夜间工作时相互冲突

相反,您应该在您控制的后端上进行工作。使用一个周期性的代码来调度和执行代码比较容易,所以你应该考虑使用它。 另见: