检查用户活动状态-Android

检查用户活动状态-Android,android,Android,如何检查用户是否处于活动状态 我试了一些。。方法并得出了以下有效的结论: @Override protected void onResume() { super.onResume(); firebaseUser = firebaseAuth.getCurrentUser(); if (firebaseUser != null) { userID = firebaseUser.getUid(); firebaseFirestore.

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

我试了一些。。方法并得出了以下有效的结论:

@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);

    }

}
这是主要的活动。我不知道是否应该使用onStart方法。无论如何,我只想更改用户的活动状态,如果他已从“最近的应用”按钮切换应用程序,或已在应用程序之外执行任何其他操作。因为如果他这样做了,活动仍然是真实的


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

那么您需要使用的函数是主活动上的onStart()和onStop()。此外,建议将“活动”变量重命名为“在线”

然后我们需要在用户退出时将其设置为
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()。然后您可以轻松地在数据库中访问它。希望有帮助。

那么您需要使用的函数是主活动中的onStart()和onStop()。此外,建议将“活动”变量重命名为“在线”

然后我们需要在用户退出时将其设置为
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()。然后您可以轻松地在数据库中访问它。希望有帮助。

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

        }
    }
}
public class ActivityOne extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class ActivityTwo extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class ActivityThree extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
例如,现在你还有其他活动,比如活动一、活动二和活动三

ActivityOne.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);

        }
    }
}
public class ActivityOne extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class ActivityTwo extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class ActivityThree extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
ActivityTwo.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);

        }
    }
}
public class ActivityOne extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class ActivityTwo extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class ActivityThree extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
ActivityThree.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);

        }
    }
}
public class ActivityOne extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class ActivityTwo extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class ActivityThree extends BaseActivity {

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

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

        }
    }
}
public class ActivityOne extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class ActivityTwo extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class ActivityThree extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
例如,现在你还有其他活动,比如活动一、活动二和活动三

ActivityOne.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);

        }
    }
}
public class ActivityOne extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class ActivityTwo extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class ActivityThree extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
ActivityTwo.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);

        }
    }
}
public class ActivityOne extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class ActivityTwo extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class ActivityThree extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
ActivityThree.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);

        }
    }
}
public class ActivityOne extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class ActivityTwo extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class ActivityThree extends BaseActivity {

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

您需要创建一个BaseActivity,所有其他活动都应该被BaseActivity覆盖。当在onResume()的callbase上->更新(“活动”,true)和onPause()的callbase上->更新(“活动”,false)时@HardikBambhania你能举个例子吗?你需要创建一个BaseActivity,所有其他活动都应该被BaseActivity覆盖。当在onResume()的callbase上-->update(“active”,true)和onPause()的callbase上-->update(“active”,false)@HardikBambhania你能举个例子吗?我试着用这两个,但是当另一个活动启动时,该值被设置为false。你知道吗,你不必在其他活动的任何地方包含此函数?我的意思是,我认为你需要做的,我建议的是@Hardik所说的,但我认为你已经知道不要在其他活动中包含此代码。我尝试使用这两个,但是当另一个活动启动时,该值被设置为false。你知道吗,你不必在其他活动的任何地方包含此函数?我的意思是我认为你需要做的,我建议的是@Hardik所说的,但我想你已经知道不要在其他活动中包含此代码。我正在使用此代码进行聊天应用。当用户脱机时,将显示最后一次看到的消息。代码工作得很好。但在切换活动时,该值设置为
false
,然后设置为
true
fast(我认为这是由于
onResume
onPause
方法造成的。但是,当用户与chatUser一起进入ChatActivity时,“active”字段的值为true,但显示的是最后看到的消息。这是使用
addSnapshotListener
方法完成的。你知道如何完美地做到这一点吗我将此用于聊天应用程序。当用户脱机时,将显示最后一次看到的消息。代码工作正常。但在切换活动时,该值设置为
false
,然后设置为
true
fast(我认为这是由于
onResume
onPause
方法造成的。但是,当用户与chatUser一起进入ChatActivity时,“active”字段的值为true,但显示的是最后一次看到的消息。这是使用
addSnapshotListener
方法完成的。您知道如何完美地做到这一点吗?