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

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

글쓴이 : 에찌 날짜 : 2017-04-14 (금) 15:28 조회 : 3333
글주소 : http://www.androidside.com/B56/32983
 
  No1 기술혁신 NXP반도체
반도체전문업체, 휴대전화, 가전, ID, 범용반도체, 소프트웨어, 반도체제품안내.
www.nxp.com
  구로 오라클자바교육센터
개발회사 부설 교육기관, 현업강사 단기속성 실무강좌, 재직자환급, 구직자 무료취업
www.oraclejava.co.kr
  앱제작사 바이더앱
어플개발, 안드로이드, 아이폰, 어플맞춤제작, 쇼핑몰앱제작, 무료상담
www.buytheapp.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 350
1104 강좌  100 Days Google Dev, 3: Google Play Services 7.5 StanleyKou 01-24 1 1040
1103 강좌  100 Days Google Dev, 2: The Magic of LRU Cache StanleyKou 01-20 0 988
1102 강좌  100 Days Google Dev, 1: Android Design Support Library 2 StanleyKou 01-18 0 1150
1101 TIP&TECH  리스트뷰에서 스위치,체크박스사용시 5 에찌 05-08 5 2739
1100 TIP&TECH  뷰(RecyclerView/...)에 Max Height 주기/[Android] 김병희라고요 04-26 0 2464
1099 TIP&TECH  TabLayout ClickEvent 에찌 04-21 1 2214
1098 TIP&TECH  현재 사용하고 있는 어플 foreground인지 backgroun… 4 에찌 04-14 2 3334
1097 TIP&TECH  안드로이드 Drawble 에 해상도 마다 이미지를 … 1 에찌 04-14 2 2202
1096 TIP&TECH  fragment 에서 ButterKnife 사용 시 resource가져올 때… 1 에찌 04-12 0 1778
1095 TIP&TECH  Youtube 및 facebook 동영상 업로드 할때 1 희망과꿈을 03-28 0 2285
1094 TIP&TECH  google service lib 가져올 때 3 에찌 03-20 3 2289
1093 소스코드  CentralRV 프로젝트 - RecyclerView 가로/세로 가운… 1 김병희라고요 01-30 2 4008
1092 TIP&TECH  번개검색 시스템/[Android] 2 김병희라고요 12-29 2 2791
1091 TIP&TECH  RecyclerView 특정 포지션으로 스크롤 - smoothScroll… 1 김병희라고요 12-12 1 2895
1090 강좌  왕앱따 107. 자바/C++ 파일읽기 속도 비교/[Androi 김병희라고요 11-26 0 2926
1089 강좌  왕앱따 106. C++ 동영상 강좌/[Android] 김병희라고요 11-23 0 3510
1088 소스코드  AOSP용 한글 키보드 입력키 엘카이저 11-17 1 3355
1087 강좌  addDrawerListener, setDrawerListener(deprecated)/[Android] 김병희라고요 11-02 2 3477
1086 강좌  왕앱따 103. 아이콘 반복클릭 테스트/[Android] 김병희라고요 11-01 0 2649
 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 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기