Java 使用Firebase实时数据库重新启动时重置报警

Java 使用Firebase实时数据库重新启动时重置报警,java,android,firebase,firebase-realtime-database,firebase-authentication,Java,Android,Firebase,Firebase Realtime Database,Firebase Authentication,我的应用程序有一些功能,其中一个是警报,在重新启动时,所有警报都被取消。我试图在重新启动时重置它们,但从IntentService类检索数据时遇到问题,如下所示 我的参考和数据库结构 rootRef = FirebaseDatabase.getInstance().getReference(); userRef = rootRef.child(getString(R.string.db_user)); userDataRef = userRef.child(firebaseUser.getUid

我的应用程序有一些功能,其中一个是警报,在重新启动时,所有警报都被取消。我试图在重新启动时重置它们,但从
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));
My
IntentService
class

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));
    }
}
第一个问题是注释中提到的
userId
,第二个问题是创建引用是否会触发onchildaded事件

我们非常欢迎任何更好的方法来实现这一点,提前感谢您

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));
如果用户尚未登录,如何在此处检索用户ID

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

创建引用是否会触发OnChildaded事件


不,仅创建引用并不意味着将触发
onchildaded()
方法。只有当您将侦听器附加到该引用上时,才会触发此方法。

所以我需要保存本地触发的报警并从那里检索它们?没有其他选项可以从数据库中检索它们?即使我将usersId保存在手机上并相应地检索引用?(对于
onchildaded()
我将添加侦听器,谢谢)如果您确定哪个用户将登录,并且只要您需要在该引用中使用该用户id,则需要保存该用户id。只有少数帐户将链接到手机,因此我可以将其id保存在
SharedReferences
中并通过这种方式检索,因为我不在乎谁会再次登录,我只需要为所有用户重置警报。谢谢你的帮助!我会测试它,如果它有效,我会将问题标记为已回答;)@好的。让我保持诗意。干杯最后,我使用Room在本地数据库表中只添加了重置警报所需的数据,并在服务类中访问了它,谢谢:)