Java 如何使用SharedReferences检查用户是否正在使用应用程序?

Java 如何使用SharedReferences检查用户是否正在使用应用程序?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我当前的代码无法查看用户是否在线,人们告诉我可以使用共享首选项来实现目标,但我不确定如何使用共享首选项编辑数据库值。。。我只使用共享首选项来检查用户是否通过了某个活动,以便下次跳过它(注册活动和类似活动,它们只需要一次访问) 有没有人可以帮助我如何使用共享首选项检查用户是否在线您可以使用此代码。对我来说效果很好 @Override public void onStart(){ super.onStart(); mDatabaseReference.child("On

我当前的代码无法查看用户是否在线,人们告诉我可以使用共享首选项来实现目标,但我不确定如何使用共享首选项编辑数据库值。。。我只使用共享首选项来检查用户是否通过了某个活动,以便下次跳过它(注册活动和类似活动,它们只需要一次访问)
有没有人可以帮助我如何使用共享首选项检查用户是否在线

您可以使用此代码。对我来说效果很好

   @Override
    public void onStart(){
    super.onStart();
    mDatabaseReference.child("Online").setValue(true);
    }

   @Override
    public void onStop(){
    super.onStop();
    mDatabaseReference.child("Online").setValue(false);
    }

您可以使用此代码。对我来说效果很好

   @Override
    public void onStart(){
    super.onStart();
    mDatabaseReference.child("Online").setValue(true);
    }

   @Override
    public void onStop(){
    super.onStop();
    mDatabaseReference.child("Online").setValue(false);
    }

在这种情况下,不需要使用
SharedReferences
。实现这一点的一个简单方法是为数据库中的每个用户使用
Online
属性,查看它是否在线。为此,我建议您使用Firebase的内置
onDisconnect()
方法。它使您能够预定义一个操作,该操作将在客户端断开连接后立即发生

您还可以检测用户的连接状态。对于许多与状态相关的功能,您的应用程序可以知道它何时处于
在线状态
离线状态
。Firebase实时数据库在以下位置提供特殊位置:

@Override
protected void onStart()
{
    super.onStart();

    currentUser = mAuth.getCurrentUser();

    if (currentUser == null)
    {
        LogOutUser();
    }
    else if(currentUser != null)
    {
        UsersReference.child("online").setValue("true");
    }

}
每次Firebase实时数据库客户端的连接状态更改时都会更新。以下是官方文件中的一个示例:

/.info/connected`

在这种情况下,不需要使用
SharedReferences
。实现这一点的一个简单方法是为数据库中的每个用户使用
Online
属性,查看它是否在线。为此,我建议您使用Firebase的内置
onDisconnect()
方法。它使您能够预定义一个操作,该操作将在客户端断开连接后立即发生

您还可以检测用户的连接状态。对于许多与状态相关的功能,您的应用程序可以知道它何时处于
在线状态
离线状态
。Firebase实时数据库在以下位置提供特殊位置:

@Override
protected void onStart()
{
    super.onStart();

    currentUser = mAuth.getCurrentUser();

    if (currentUser == null)
    {
        LogOutUser();
    }
    else if(currentUser != null)
    {
        UsersReference.child("online").setValue("true");
    }

}
每次Firebase实时数据库客户端的连接状态更改时都会更新。以下是官方文件中的一个示例:

/.info/connected`

在mDatabaseReference.child(“在线”).setValue(“true”)中使用引号;这只是将布尔值转换为字符串。。。它与共享首选项有什么关系?我想使用共享首选项实现这一点您在当前代码中面临哪些错误?当我打开一个活动时,当开始运行时,它在数据库中显示为联机;当我继续进行下一个活动时,它再次显示为联机,下一秒变为脱机,因为上一个活动的on stop将在最后执行。。。我想解决这个问题使用mDatabaseReference.child(“在线”).setValue(“true”)中的引号;这只是将布尔值转换为字符串。。。它与共享首选项有什么关系?我想使用共享首选项实现这一点您在当前代码中面临哪些错误?当我打开一个活动时,当开始运行时,它在数据库中显示为联机;当我继续进行下一个活动时,它再次显示为联机,下一秒变为脱机,因为上一个活动的on stop将在最后执行。。。我想解决这个问题。一切都好吗?我能帮你了解其他信息吗?一切都好吗?我能帮你了解其他信息吗?