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

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

글쓴이 : 에찌 날짜 : 2017-04-14 (금) 15:28 조회 : 670
글주소 : http://www.androidside.com/B56/32983
 
  오라클자바교육센터 구로본점
안드로이드전문교육, SDK실무개발, APP개발프로젝트, 실습폰지원, 재직자환급
www.oraclejava.co.kr
  엠브이테크
임베디드 개발용역 및 양산 Rockchip Freescale 엑시노스
www.mvtech.or.kr
  SBS아카데미컴퓨터학원송강인
여름방학 최대 40% 할인이벤트, 1:1멘토링 시스템, 강남역 연결 편리한위치
sbs-artcom.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());
}

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




종합평점 (참여 1명)

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

에찌 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
잘봤습니다. 감사합니다.
댓글주소
이전글  다음글  목록 글쓰기

총 게시물 1,111건, 최근 0 건 안내 RSS
번호 분류 제목 글쓴이 날짜 추천 조회
1111 강좌  코딩없이 유기동물조회 앱만들기_공공OpenAPI … 씨드래곤아트 06-22 0 236
1110 TIP&TECH  꿀팁_공공OpenAPI 쉽게 적용하기_지하철조회앱… 씨드래곤아트 06-19 0 272
1109 TIP&TECH  코딩 힘들때 참고하세요. 대기업부터 공모전… 1 씨드래곤아트 06-16 0 382
1108 TIP&TECH  CalendarView에서요 3 마소지 05-24 0 399
1107 TIP&TECH  리스트뷰에서 스위치,체크박스사용시 4 에찌 05-08 0 560
1106 자료  videoview에서 동영상 실행할때 검은화면 1 소트 05-02 0 346
1105 TIP&TECH  뷰(RecyclerView/...)에 Max Height 주기/[Android] 김병희라고요 04-26 0 325
1104 TIP&TECH  TabLayout ClickEvent 에찌 04-21 0 321
1103 TIP&TECH  현재 사용하고 있는 어플 foreground인지 backgroun… 3 에찌 04-14 0 671
1102 TIP&TECH  안드로이드 Drawble 에 해상도 마다 이미지를 … 1 에찌 04-14 0 406
1101 TIP&TECH  fragment 에서 ButterKnife 사용 시 resource가져올 때… 1 에찌 04-12 0 366
1100 강좌  감사합니다 1 백두산ee 03-28 0 394
1099 TIP&TECH  Youtube 및 facebook 동영상 업로드 할때 1 희망과꿈을 03-28 0 425
1098 TIP&TECH  google service lib 가져올 때 3 에찌 03-20 2 625
1097 강좌  java언어에서요 4 andhuni 02-20 0 963
1096 TIP&TECH  개발 환경에 대한 질문 한 개 올립니다 6 스머리 02-03 3 1207
1095 강좌  어플 게임아이콘 1 앙기모띠 02-01 2 752
1094 소스코드  CentralRV 프로젝트 - RecyclerView 가로/세로 가운… 1 김병희라고요 01-30 1 912
1093 TIP&TECH  번개검색 시스템/[Android] 2 김병희라고요 12-29 2 970
1092 TIP&TECH  RecyclerView 특정 포지션으로 스크롤 - smoothScroll… 1 김병희라고요 12-12 1 832
 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 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기