package br.com.nglauber.livrosfirebase; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; public abstract class BaseActivity extends AppCompatActivity { private FirebaseAuth mAuth; private FirebaseAuth.AuthStateListener mAuthListener; private boolean mCallInit; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); mCallInit = true; performLogin(); } @Override public void onStart() { super.onStart(); mAuth.addAuthStateListener(mAuthListener); } @Override public void onStop() { super.onStop(); if (mAuthListener != null) { mAuth.removeAuthStateListener(mAuthListener); } } private void performLogin() { mAuth = FirebaseAuth.getInstance(); mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { FirebaseUser user = firebaseAuth.getCurrentUser(); if (user != null) { if (mCallInit) { // Call init just once mCallInit = false; init(); } } else { finish(); Intent it = new Intent(BaseActivity.this, SignInActivity.class); it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(it); } } }; } protected final FirebaseAuth getAuth(){ return mAuth; } protected abstract void init(); }