Таким образом, в основном я пытаюсь работать с функцией выхода из системы, когда пользователь отправляется в Start Activity, если он / она не вошел в систему. Проблема заключается в том, что я удаляю пользователя из базы данных Firebase Auth и Realtime, а затем выписываюсь из системы. Он перенаправляет меня на MainActivity, но снова создает пользователя с таким идентификатором. Мне нужно знать, почему мое приложение не очищает все переменные и идентификаторы, связанные, когда пользователь выходит из системы. То же самое происходит, если пользователь выходит из системы, а затем запись удаляется из базы данных, когда приложение помещается в фоновом режиме. Метод onStop создает пользователя с этим идентификатором и онлайн-полем. Мой вопрос заключается в том, как удалить связанные переменные / идентификаторы, когда пользователь выходит из системы.
Мой код для выхода из системы:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
if(item.getItemId() == R.id.main_logout_btn){
mUserRef.child("online").setValue(ServerValue.TIMESTAMP);
FirebaseAuth.getInstance().signOut();
sendToStart();
}
}
Я также использую LifeCycleEventListner, например:
ProcessLifecycleOwner.get().getLifecycle().addObserver(new LifecycleObserver() {
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onStop(){
// FirebaseUser currentUser = mAuth.getCurrentUser();
if(mCurrentUserId != null && mUserRef.child("online")!= null) {
mUserRef.child("online").setValue(ServerValue.TIMESTAMP);
}
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onStart(){
FirebaseUser currentUser = mAuth.getCurrentUser();
if(currentUser != null && currentUser.isEmailVerified() ){
mUserRef = FirebaseDatabase.getInstance().getReference().child("Users").child(currentUser.getUid());
mUserRef.child("online").setValue("true");
} else {
sendToStart();
}
}
});
Спасибо.