首页 > 解决方案 > 检查用户活动状态 - 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 方法。无论如何,我只想更改用户的活动状态,如果他从最近的应用程序按钮切换应用程序或在应用程序之外做了任何其他事情。因为如果他这样做了,活动仍然是真实的。

如果上面提到的方法是错误的,请纠正他们。

标签: android

解决方案


创建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);
    }
}

推荐阅读