Попробуйте этот код для проверки состояния приложения с помощью LifecycleObserver
gradle
implementation "android.arch.lifecycle:common-java8:1.1.1"
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
AppControllerClass
public class AppController extends Application implements LifecycleObserver {
private FirebaseAuth mAuth;
public static DatabaseReference USERS_DATABASE,INBOX_DATABASE,MESSAGE_DATABASE;
private static String TAG=AppController.class.getSimpleName();
@Override
public void onCreate() {
super.onCreate();
try {
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}catch (Exception e){
e.printStackTrace();
}
FirebaseMessaging.getInstance().setAutoInitEnabled(true);
try {
mAuth = FirebaseAuth.getInstance();
USERS_DATABASE = FirebaseDatabase.getInstance().getReference().child(USER_TABLE);
USERS_DATABASE.keepSynced(true);
} catch (Exception e) {
Log.e(TAG, "" + e.getMessage());
}
ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onMoveToForeground() {
// app moved to foreground
Log.e(TAG,"App is in foreground State");
updateParticularField("onlineStatus","online");
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onMoveToBackground() {
// app moved to background
Log.e(TAG,"App is in Background State");
updateParticularField("onlineStatus","offline");
}
public void updateParticularField(String fieldName,String fieldValue){
try {
String currentFireBaseId=mAuth.getUid();
if (!currentFireBaseId.equals("null")) {
USERS_DATABASE.child(currentFireBaseId).child(fieldName).setValue(fieldValue);
}
}catch (Exception e){
e.printStackTrace();
}
}
}
Манифест
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:name=".AppController"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Добавить Манифест
android:name=".AppController"
И убедитесь, что ваш minSdkVersion = 24
Этот код изменен мой онлайн-статус на переднем и заднем плане приложения
Снимки экрана для Firebase, как показано ниже: