【问题标题】:Reseting alarms on reboot using Firebase Realtime database使用 Firebase 实时数据库在重启时重置警报
【发布时间】:2018-05-06 23:52:15
【问题描述】:

我的应用程序有一些功能,其中之一是警报,重新启动时所有警报都会被取消。我正在尝试在重新启动时重置它们,但我在从 IntentService 类中检索数据时遇到问题,如下所示。

我的参考资料和数据库结构

rootRef = FirebaseDatabase.getInstance().getReference();
userRef = rootRef.child(getString(R.string.db_user));
userDataRef = userRef.child(firebaseUser.getUid());
alarmRef = userDataRef.child(getString(R.string.db_alarm));
// ...
reminderRef = userDataRef.child(getString(R.string.db_reminder));

我的IntentService班级

class BootService extends IntentService {

    public BootService() {
        super("BootService");
    }

    @Override
    protected void onHandleIntent(@Nullable Intent intent) {
        FirebaseApp.initializeApp(this);

        DatabaseReference alarmsRef = FirebaseDatabase.getInstance().getReference()
            .child(getString(R.string.db_user))
            .child()
            // How can I retrieve userId here if user is not logged-in yet?
            // Application may have many accounts in one phone
            // I need to retrieve them all not only one
            .child(getString(R.string.db_alarm));
    }
}

第一个问题是cmets中提到的userId,第二个是创建引用是否会触发onChildAdded事件?

非常欢迎任何更好的方法来实现这一点,在此先感谢

【问题讨论】:

    标签: java android firebase firebase-realtime-database firebase-authentication


    【解决方案1】:

    如果用户尚未登录,如何在此处检索 userId?

    你不能。如果用户尚未登录,则意味着您不知道哪个用户将登录您的应用程序以使用该特定 ID。

    创建引用会真正触发 onChildAdded 事件吗?

    不,只是创建一个引用,并不意味着会触发onChildAdded() 方法。仅当您在该引用上附加侦听器时才会触发此方法。

    【讨论】:

    • 所以我需要在本地保存以某种方式触发的警报并从那里检索它们?没有其他选项可以从数据库中检索它们吗?即使我将 usersId 保存在那部手机上并相应地检索参考? (对于onChildAdded()我会添加监听器,谢谢)
    • 如果您确定哪个用户将登录并且只要您需要在该引用中使用该用户 ID,那么您需要保存它。
    • 只有少数账户会与手机关联,所以我可以将他们的 ID 保存在SharedReferences 并通过这种方式检索,因为我并不关心谁会再次登录,我只是需要为所有用户重置警报。谢谢帮助!我将对其进行测试,如果它有效,我会将问题标记为已回答;)
    • @PeeGee 好的。保持我的诗意。干杯!
    • 我最终只添加了警报所需的数据,以便使用 Room 在本地数据库表中重置它们并在服务类中访问它,谢谢 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    相关资源
    最近更新 更多