android - 检查用户活动状态 - 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 方法。无论如何,我只想更改用户的活动状态,如果他从最近的应用程序按钮切换应用程序或在应用程序之外做了任何其他事情。因为如果他这样做了,活动仍然是真实的。
如果上面提到的方法是错误的,请纠正他们。
解决方案
创建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);
}
}
活动三.java
public class ActivityThree extends BaseActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
推荐阅读
- django - django-rest-auth:自定义注册序列化程序不保存自定义字段
- flutter - Flutter Provider 中的选择器不起作用
- c# - 添加连接引用的缺点-vs2019中的WCF服务
- javascript - 有没有办法将滑块重置为图像 1?
- javascript - 如何从ckeditor中删除特定按钮
- r - 在 R 中对调查数据进行行/列百分比?
- clojure - 如果评估,为什么这两个表达式都在这个 clojure 中?
- amazon-web-services - 如何在 aws 子组织中运行 terraform 脚本?
- javascript - 传递给 queryInterface.removeConstraint() 的选项对象的属性是什么?
- node.js - 如何在对话流实现中使用 OR 运算符