检查用户活动状态-Android

时间:2019-07-16 09:26:03

标签: android

如何检查用户是否处于活动状态?

我已经尝试了一些方法,并得出了可行的方法:

@Override
protected void onResume() {

    super.onResume();

    firebaseUser = firebaseAuth.getCurrentUser();

    if (firebaseUser != null) {

        userID = firebaseUser.getUid();

        firebaseFirestore.collection("Users").document(userID).update("active", true);

    }

}

@Override
protected void onPause() {

    super.onPause();

    firebaseUser = firebaseAuth.getCurrentUser();

    if (firebaseUser != null) {

        userID = firebaseUser.getUid();

        firebaseFirestore.collection("Users").document(userID).update("active", true);

    }

}

@Override
protected void onDestroy() {

    super.onDestroy();

    firebaseUser = firebaseAuth.getCurrentUser();

    if (firebaseUser != null) {

        userID = firebaseUser.getUid();

        firebaseFirestore.collection("Users").document(userID).update("active", false);

    }

}

这是在MainActivity中。我不知道我是否应该使用onStart方法。无论如何,我只想更改用户的活动状态,如果他已经从“最近使用的应用程序”按钮切换了应用程序,或者在应用程序之外进行了其他操作。原因是如果他这样做,则该活动仍然正确。

如果上述方法有误,请更正它们。

2 个答案:

答案 0 :(得分:0)

然后您需要使用的功能是主要活动上的onStart()和onStop()。另外,建议将“活动”变量重命名为“在线”。

@Override
protected void onStart() {

    super.onStart();

    firebaseUser = firebaseAuth.getCurrentUser();

    if (firebaseUser != null) {

        userID = firebaseUser.getUid();

        firebaseFirestore.collection("Users").document(userID).update("online", true);

    }

}

然后,当用户退出时,我们需要将其设置为false。像这样:

@Override
protected void onStop() {

    super.onStop();

    firebaseUser = firebaseAuth.getCurrentUser();

    if (firebaseUser != null) {

        userID = firebaseUser.getUid();

        firebaseFirestore.collection("Users").document(userID).update("online", false);

    }

}

我建议完全不使用onDestroy()。然后,您可以轻松地在数据库中访问它。希望对您有所帮助。

答案 1 :(得分:0)

创建 BaseActivity.java ,您可以在其中向用户发送在线状态。

BaseActivity.java

public class BaseActivity extends AppCompatActivity {

  ....

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

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

        firebaseUser = firebaseAuth.getCurrentUser();

        if (firebaseUser != null) {
            userID = firebaseUser.getUid();
            firebaseFirestore.collection("Users").document(userID).update("active", true);
        }
    }

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

        firebaseUser = firebaseAuth.getCurrentUser();

        if (firebaseUser != null) {
            userID = firebaseUser.getUid();
            firebaseFirestore.collection("Users").document(userID).update("active", false);

        }
    }
}

例如,现在您还有其他活动,例如ActivityOne,ActivityTwo和ActivityThree,

ActivityOne.java

public class ActivityOne extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

ActivityTwo.java

public class ActivityTwo extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

ActivityThree.java

public class ActivityThree extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}