如何检查用户是否处于活动状态?
我已经尝试了一些方法,并得出了可行的方法:
@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方法。无论如何,我只想更改用户的活动状态,如果他已经从“最近使用的应用程序”按钮切换了应用程序,或者在应用程序之外进行了其他操作。原因是如果他这样做,则该活动仍然正确。
如果上述方法有误,请更正它们。
答案 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);
}
}