Java 如何随时在Firebase上获取数据?

Java 如何随时在Firebase上获取数据?,java,android,firebase-realtime-database,Java,Android,Firebase Realtime Database,我时不时地在Firebase上获取数据,因为我正在跟踪某人的GPS。有人每隔5分钟保存他的位置,这样我就可以跟踪他的GPS。但我的问题是,如何以5分钟的间隔从Firebase获取数据 除此之外还有其他可能的方法吗 提前感谢。:) 因此,如果有人每五分钟更新一次他/她的位置,那么你真的不必在你身边运行计数器,每五分钟跟踪一次位置。所以我认为您只需要在Firebase中添加一个侦听器到您想要跟踪的节点 这里有一个简单的实现。抄袭 我也在复制那里的引语。让你知道它是为你的目的服务的 只要有新数据添加到

我时不时地在Firebase上获取数据,因为我正在跟踪某人的GPS。有人每隔5分钟保存他的位置,这样我就可以跟踪他的GPS。但我的问题是,如何以5分钟的间隔从Firebase获取数据

除此之外还有其他可能的方法吗


提前感谢。:)

因此,如果有人每五分钟更新一次他/她的位置,那么你真的不必在你身边运行
计数器,每五分钟跟踪一次位置。所以我认为您只需要在Firebase中添加一个侦听器到您想要跟踪的节点

这里有一个简单的实现。抄袭

我也在复制那里的引语。让你知道它是为你的目的服务的

只要有新数据添加到Firebase中,就会调用此方法 引用,我们不需要编写任何额外的代码来实现这一点 发生


因此,每次你想要跟踪的人更新他/她的位置时,你都会收到一个回调,使用上述方法并采取必要的行动。您真的不必实现轮询机制来进行跟踪。Firebase实际上就是这样工作的

因此,如果有人每五分钟更新一次他/她的位置,那么你真的不必在你身边运行
计数器,每五分钟跟踪一次位置。所以我认为您只需要在Firebase中添加一个侦听器到您想要跟踪的节点

这里有一个简单的实现。抄袭

我也在复制那里的引语。让你知道它是为你的目的服务的

只要有新数据添加到Firebase中,就会调用此方法 引用,我们不需要编写任何额外的代码来实现这一点 发生


因此,每次你想要跟踪的人更新他/她的位置时,你都会收到一个回调,使用上述方法并采取必要的行动。您真的不必实现轮询机制来进行跟踪。Firebase实际上就是这样工作的

从firebase检索数据不需要使用任何类型的调度器服务

由于Firebase提供实时数据库。。每当您将数据推送到Firebase数据库时,侦听器将触发,您可以检索数据

实现以下侦听器,使用此侦听器,您可以在数据库更新时检索数据

DatabaseReference mDatabase =FirebaseDatabase.getInstance().getReference();


ValueEventListener yourModelListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        // Get YOURMODEL object and use the values to update the UI
        YourModel mModel = dataSnapshot.getValue(YourModel.class);
        Log.e("Data : ",""+mModel);

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Getting Post failed, log a message
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());

    }
};

mDatabase.addValueEventListener(yourModelListener);

有关侦听器的详细信息

从firebase检索数据不需要使用任何类型的调度器服务

由于Firebase提供实时数据库。。每当您将数据推送到Firebase数据库时,侦听器将触发,您可以检索数据

实现以下侦听器,使用此侦听器,您可以在数据库更新时检索数据

DatabaseReference mDatabase =FirebaseDatabase.getInstance().getReference();


ValueEventListener yourModelListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        // Get YOURMODEL object and use the values to update the UI
        YourModel mModel = dataSnapshot.getValue(YourModel.class);
        Log.e("Data : ",""+mModel);

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Getting Post failed, log a message
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());

    }
};

mDatabase.addValueEventListener(yourModelListener);

有关侦听器的详细信息

是的,答案很好。但是我们不需要添加数据,只需要更新数据。有这样的方法吗?这个回调方法也会在更新的情况下被调用。这个名字让人困惑。如果你不介意的话,我举个例子。我试图在
Firebase
上更改/更新一个特定孩子的纬度和经度,并在检查正在运行的应用程序时,而不是删除旧标记并显示当前标记。它们都将显示出来。但是如果我要强制关闭应用程序并再次打开它,该标记将显示curret标记:)我希望您理解hehehYes,如果您重新打开该应用程序,它将显示当前标记,该标记将被更新,因为没有以前标记的引用,除非您将其保存在本地数据库中。顺便说一句,这应该是通常的行为。如果你想同时显示这两种方法,你也需要将它们作为另一个条目放入Firebase。有人知道这个Firebase方法的基本工作原理吗?他们使用了特殊协议还是使用了间隔提取?是的,答案很好。但是我们不需要添加数据,只需要更新数据。有这样的方法吗?这个回调方法也会在更新的情况下被调用。这个名字让人困惑。如果你不介意的话,我举个例子。我试图在
Firebase
上更改/更新一个特定孩子的纬度和经度,并在检查正在运行的应用程序时,而不是删除旧标记并显示当前标记。它们都将显示出来。但是如果我要强制关闭应用程序并再次打开它,该标记将显示curret标记:)我希望您理解hehehYes,如果您重新打开该应用程序,它将显示当前标记,该标记将被更新,因为没有以前标记的引用,除非您将其保存在本地数据库中。顺便说一句,这应该是常见的行为。如果您想同时显示这两种方法,您也需要将它们作为另一个条目放入Firebase中。有人知道此Firebase方法的基本工作原理吗?他们是使用特殊协议还是使用间隔提取?