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

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

글쓴이 : 에찌 날짜 : 2017-04-14 (금) 15:28 조회 : 125
글주소 : http://www.androidside.com/B56/32983
 
  SBS아카데미컴퓨터학원송유진
비전공자 취업가능, 1학기 모집중, 550개과목 개인별맞춤, ANDROID
sbsitschool.co.kr
  SBS아카데미컴퓨터 이민호
ANDROID, 겨울방학 할인최대40%, ANDROID, 국비지원.
www.sbsart.pe.kr
  SBS아카데미컴퓨터학원원용식
강남역, 컴퓨터학원, 웹디자인, 편집디자인, 인테리어, 애니매이션, 교육멘토시스템
sbsartnet.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());
}

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





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

에찌 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;
}
아마 현재 실행 중인 프로세스 정보 가져와서 보여주는 것같은데 응용하셔서 사용하면 될 것 같네요 ^^



댓글주소
이전글  다음글  목록 글쓰기

총 게시물 1,105건, 최근 1 건 안내 RSS
번호 분류 제목 글쓴이 날짜 추천 조회
1105 TIP&TECH  뷰(RecyclerView/...)에 Max Height 주기/[Android] 김병희라고요 04-26 0 30
1104 TIP&TECH  TabLayout ClickEvent 에찌 04-21 0 63
1103 TIP&TECH  현재 사용하고 있는 어플 foreground인지 backgroun… 1 에찌 04-14 0 126
1102 TIP&TECH  안드로이드 Drawble 에 해상도 마다 이미지를 … 에찌 04-14 0 88
1101 TIP&TECH  fragment 에서 ButterKnife 사용 시 resource가져올 때… 에찌 04-12 0 85
1100 강좌  감사합니다 1 백두산ee 03-28 0 148
1099 TIP&TECH  Youtube 및 facebook 동영상 업로드 할때 희망과꿈을 03-28 0 158
1098 TIP&TECH  google service lib 가져올 때 2 에찌 03-20 2 264
1097 강좌  java언어에서요 4 andhuni 02-20 0 632
1096 TIP&TECH  개발 환경에 대한 질문 한 개 올립니다 6 스머리 02-03 3 853
1095 강좌  어플 게임아이콘 1 앙기모띠 02-01 2 423
1094 소스코드  CentralRV 프로젝트 - RecyclerView 가로/세로 가운… 김병희라고요 01-30 1 420
1093 TIP&TECH  번개검색 시스템/[Android] 2 김병희라고요 12-29 2 650
1092 TIP&TECH  RecyclerView 특정 포지션으로 스크롤 - smoothScroll… 김병희라고요 12-12 1 508
1091 강좌  왕앱따 107. 자바/C++ 파일읽기 속도 비교/[Androi 김병희라고요 11-26 0 758
1090 강좌  왕앱따 106. C++ 동영상 강좌/[Android] 김병희라고요 11-23 0 702
1089 자료  박근혜를 탄핵할 수 있는 어플을 만들었어요. 2 씨드래곤아트 11-23 0 1061
1088 소스코드  AOSP용 한글 키보드 입력키 엘카이저 11-17 1 656
1087 강좌  addDrawerListener, setDrawerListener(deprecated)/[Android] 김병희라고요 11-02 2 905
1086 강좌  왕앱따 103. 아이콘 반복클릭 테스트/[Android] 김병희라고요 11-01 0 731
 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 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기