检查用户是否在线单独上课

时间:2018-11-29 08:57:38

标签: java android firebase firebase-realtime-database

我想重新使用以下代码:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

if (user != null) {
    // User is signed in
    // Redirect to signed-in flow
} else {
    // No user is signed in
    // Redirect to login activity
}

但是作为Java和Android的初学者,我不确定以哪种方式使用此代码。我应该在单独的类中使用它,还是以静态方式使用它?如果是这样,我在以下方面是正确的:

创建名为IsUserLoggedIn.java的单独的类:

public class IsUserLoggedIn {    

    public static void isUserLogged() {
        if (user != null) {
        // User is signed in
        // Redirect to signed-in flow
        } else {
        // No user is signed in
        // Redirect to login activity
        }

    }        
}

在任何要检查的活动中,我将以下内容放在onResume中:

IsUserLoggedIn isUserLoggedIn = new IsUserLoggedIn();
isUserLoggedIn.isUserLogged();

对吗?

1 个答案:

答案 0 :(得分:0)

如果您使用的是Firebase数据库,则还可以将用户的当前状态保存在数据库中,并仅从那里获取答案。

我的意思是,对于数据库中的每个用户节点,您可以有一个名为loginStatus的节点,您可以在用户登录或登录应用程序时将其设置为true,并在用户注销时将其设置为false。

因此,针对上述想法的一些代码将如下所示:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("users").child(FirebaseAuth.getInstance().getUid());

// put this code where you grant user the access to log in

ref.child("loginStatus").setValue(true);

// now you can retrieve the value whenever you want in your app directly without using any new class

// to set the status to false, put this code in the code where you give user the option to log-out from your app

ref.child("loginStatus").setValue(false);

此外,如果您仍然想使用另一个类,则可以将代码放在新的Java类中,然后像显示的那样使用该代码,它看起来通常是正确的。