본문 바로가기

Android/Android 코드

안드로이드 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에서 갱신처리.
}

 

다음과 같이 사용해서 하고 싶은 일을 처리해 준다.