안드로이드 background/Foreground
/**
* Created by skchoi on 2020/03/27
*
* ForegroundCheck.get().isBackground
* ForegroundCheck.get().appStatus
*
* 간단한 동작 설명
* onActivityStarted 추가 되면 카운트 +1
* onActivityStopped 추가 되면 카운트 -1
* 카운트가 0 이면 백그라운드
* 카운트가 1 보다 크면 포그라운드
* 카운트가 1 이면 포그라운드 전환
*/
import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
public class ForegroundCheck implements Application.ActivityLifecycleCallbacks {
private static ForegroundCheck instance;
public static void init(Application app) {
if (instance == null) {
instance = new ForegroundCheck();
app.registerActivityLifecycleCallbacks(instance);
}
}
public static ForegroundCheck get() {
return instance;
}
private ForegroundCheck() {
}
private AppStatus mAppStatus;
public AppStatus getAppStatus() {
return mAppStatus;
}
// check if app is return foreground
public boolean isBackground() {
return mAppStatus.ordinal() == AppStatus.BACKGROUND.ordinal();
}
public enum AppStatus {
BACKGROUND, // app is background
RETURNED_TO_FOREGROUND, // app returned to foreground(or first launch)
FOREGROUND; // app is foreground
}
// running activity count
private int running = 0;
@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
}
@Override
public void onActivityStarted(Activity activity) {
if (++running == 1) {
mAppStatus = AppStatus.RETURNED_TO_FOREGROUND;
} else if (running > 1) {
mAppStatus = AppStatus.FOREGROUND;
}
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
if (--running == 0) {
mAppStatus = AppStatus.BACKGROUND;
}
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
}
체크가 필요한 Service나 Activity에서
if (ForegroundCheck.get().isBackground()) {
// TODO: 2020/03/27 skchoi 앱이 백그라운드일 때 noti띄워줌
} else {
// TODO: 2020/03/27 skchoi 앱이 포그라운드면 해당 app에서 갱신처리.
}
다음과 같이 사용해서 하고 싶은 일을 처리해 준다.