총 게시물 1,105건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[TIP&TECH]

현재 사용하고 있는 어플 foreground인지 background 인지 알아내기

글쓴이 : 에찌 날짜 : 2017-04-14 (금) 15:28 조회 : 3721
글주소 : http://www.androidside.com/B56/32983
 
  반도체전문업체 NXP반도체
반도체전문업체, 휴대전화, 가전, ID, 범용반도체, 소프트웨어, 반도체제품안내.
www.nxp.com
  구로 오라클자바교육센터
개발회사 부설 교육기관, 현업강사 단기속성 실무강좌, 재직자환급, 구직자 무료취업
www.oraclejava.co.kr
  서울게임아카데미
추천게임학원, 2018년 한국 소비자만족지수 1위, 고용노동부국비지원, 수강료조회
www.seoulgame.co.kr
신청하기


이 글은 GsBoB 님의 글을 참조하였습니다.
http://gogorchg.tistory.com/entry/Android-App-Foreground-Background

public class MemoryLeakApplication extends Application {

private RefWatcher refWatcher;
private AppStatus mAppStatus = AppStatus.FOREGROUND;

public static RefWatcher getRefWatcher(Context context) {
MemoryLeakApplication application = (MemoryLeakApplication) context.getApplicationContext();
return application.refWatcher;
}


@Override
public void onCreate() {
super.onCreate();
if (LeakCanary.isInAnalyzerProcess(this)) {
// This process is dedicated to LeakCanary for heap analysis.
// You should not init your app in this process.
return;
}

registerActivityLifecycleCallbacks(new MyActivityLifecycleCallbacks());
refWatcher = LeakCanary.install(this);
}

public AppStatus getAppStatus() {
return mAppStatus;
}

// check if app is foreground
public boolean isForeground() {
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
}

public class MyActivityLifecycleCallbacks implements ActivityLifecycleCallbacks {

// running activity count
private int running = 0;

@Override
public void onActivityCreated(Activity activity, Bundle bundle) {

}

@Override
public void onActivityStarted(Activity activity) {
if (++running == 1) {
// running activity is 1,
// app must be returned from background just now (or first launch)
mAppStatus = AppStatus.RETURNED_TO_FOREGROUND;
} else if (running > 1) {
// 2 or more running activities,
// should be foreground already.
mAppStatus = AppStatus.FOREGROUND;
}
}

@Override
public void onActivityResumed(Activity activity) {
}

@Override
public void onActivityPaused(Activity activity) {
}

@Override
public void onActivityStopped(Activity activity) {
if (--running == 0) {
// no active activity
// app goes to background
mAppStatus = AppStatus.BACKGROUND;
}
}

@Override
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
}

@Override
public void onActivityDestroyed(Activity activity) {
}
}

}

사용방법

if (getApplication() instanceof MemoryLeakApplication) {
if (((MemoryLeakApplication)getApplication()).isForeground()) {
Logger.d("foregound");

} else {
Logger.d("backgound");
}
} else {
Logger.d("Application Name : " + getApplication() + " , packageName : " + getApplication().getPackageName());
}

메모리릭 체크하는 거도 있어서 보기 불편하실 수도 있으시나 오히려 이것도 같이 사용할 수 있는 하나의 팁이겠죠?
잘 동작하네요
아직 여러가지 테스트를 모두 다 진행한 건 아니지만 구동은 확인했어요 ^^ 도움이 되시길




종합평점 (참여 2명)

추천 버튼을 클릭하면 추천한 자와 추천받은 자 모두에게 포인트가 지급됩니다.

에찌 2017-04-14 (금) 15:53
다른 분들이 올린 것중 이렇게 하셔서 구하시는 분들도 계시네요

public static boolean isForeground(Context context) {

// Get the Activity Manager
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

// Get a list of running tasks, we are only interested in the last one,
// the top most so we give a 1 as parameter so we only get the topmost.
List<ActivityManager.RunningAppProcessInfo> task = manager.getRunningAppProcesses();

// Get the info we need for comparison.
ComponentName componentInfo = task.get(0).importanceReasonComponent;

// Check if it matches our package name.
if(componentInfo.getPackageName().equals(context.getPackageName()))
return true;

// If not then our app is not on the foreground.
return false;
}
아마 현재 실행 중인 프로세스 정보 가져와서 보여주는 것같은데 응용하셔서 사용하면 될 것 같네요 ^^



댓글주소
미싱카 2017-05-08 (월) 19:29
감사합니다.
댓글주소
chan1 2017-07-20 (목) 11:42
잘봤습니다. 감사합니다.
댓글주소
안사드 2017-08-21 (월) 18:10
감사합니다. 
댓글주소
이전글  다음글  목록 글쓰기

총 게시물 1,105건, 최근 0 건 안내 RSS
번호 분류 제목 글쓴이 날짜 추천 조회
1105 소스코드  안드로이드 두더지게임 (랭킹, 두더지 종류 -… 홍훙훙 10-04 0 694
1104 강좌  100 Days Google Dev, 3: Google Play Services 7.5 StanleyKou 01-24 1 1228
1103 강좌  100 Days Google Dev, 2: The Magic of LRU Cache StanleyKou 01-20 0 1184
1102 강좌  100 Days Google Dev, 1: Android Design Support Library 2 StanleyKou 01-18 0 1385
1101 TIP&TECH  리스트뷰에서 스위치,체크박스사용시 5 에찌 05-08 5 3047
1100 TIP&TECH  뷰(RecyclerView/...)에 Max Height 주기/[Android] 김병희라고요 04-26 0 2760
1099 TIP&TECH  TabLayout ClickEvent 에찌 04-21 1 2447
1098 TIP&TECH  현재 사용하고 있는 어플 foreground인지 backgroun… 4 에찌 04-14 2 3722
1097 TIP&TECH  안드로이드 Drawble 에 해상도 마다 이미지를 … 1 에찌 04-14 2 2420
1096 TIP&TECH  fragment 에서 ButterKnife 사용 시 resource가져올 때… 1 에찌 04-12 0 1980
1095 TIP&TECH  Youtube 및 facebook 동영상 업로드 할때 1 희망과꿈을 03-28 0 2487
1094 TIP&TECH  google service lib 가져올 때 3 에찌 03-20 3 2504
1093 소스코드  CentralRV 프로젝트 - RecyclerView 가로/세로 가운… 1 김병희라고요 01-30 2 4402
1092 TIP&TECH  번개검색 시스템/[Android] 2 김병희라고요 12-29 2 2995
1091 TIP&TECH  RecyclerView 특정 포지션으로 스크롤 - smoothScroll… 1 김병희라고요 12-12 1 3177
1090 강좌  왕앱따 107. 자바/C++ 파일읽기 속도 비교/[Androi 김병희라고요 11-26 0 3152
1089 강좌  왕앱따 106. C++ 동영상 강좌/[Android] 김병희라고요 11-23 0 3835
1088 소스코드  AOSP용 한글 키보드 입력키 엘카이저 11-17 1 3677
1087 강좌  addDrawerListener, setDrawerListener(deprecated)/[Android] 김병희라고요 11-02 2 3656
1086 강좌  왕앱따 103. 아이콘 반복클릭 테스트/[Android] 1 김병희라고요 11-01 0 2890
 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  다음  맨끝
 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기