[안드로이드] Android 에서 현재 화면 top 에 있는 activity 알아내기. 컴부리 이야기

ActivityManager activityManager = (ActivityManager) mContext.getSystemService(mContext.ACTIVITY_SERVICE);
        List<RunningTaskInfo> info;
   info = activityManager.getRunningTasks(7);
         for (Iterator iterator = info.iterator(); iterator.hasNext();)  {
             RunningTaskInfo runningTaskInfo = (RunningTaskInfo) iterator.next();
             if(runningTaskInfo.topActivity.getClassName().equals("com.android.ABCApplication.ABCApplication")) {
                 Log.e("ABCApplication","ABCApplication is running");
                 return true;
             }
   }

 

쉽게 말하면 위에 getRunningTasks 에서 7개의 Acitivity 를 가지고 옵니다. 물론 실행중인 Activity 가 7개보다 적으면 실행되고 있는 모든 Activity 를 가지고 옵니다. 이렇게 가지고 온 Activity 에서 ABCApplication이 있으면 return true; 한 것입니다. 위에서 7 대신에 1을 사용하면 바로 최고 위에 실행중인 Activity 를 가지고 올 수 있는 것입니다.

다음과 같은 방법으로 패키지 및 패키지의 하위 클래스도 확인 할수 있습니다. 

String pkgName = runningTaskInfo.topActivity.getPackageName();
String className = runningTaskInfo.topActivity.getClassName();

if((pkgName.equals("com.company.android.app.ABCPackage"))&& (className.equals("com.company.android.app.ABCPackage.abc.ABCClass"))) {

..

.

.

. 어쩌구저쩌구..;;

}


핑백

덧글

  • zelaw 2015/10/10 10:39 # 삭제 답글

    좋은 자료 감사합니다.
    롤리팝에서도 통하는지 한번 해봐야겠네요.
  • 김병희 2017/05/19 17:27 # 삭제 답글

    확실한 자료, 널리 알려야겠네요.
    이 페이지를 발견한 것은 그야말로 행운입니다.
    감사합니다.
  • 밍밍이 2017/09/16 23:14 # 삭제 답글

    mContext를 getApplicationContext()로 대체해도 되는건가요?
  • Branden 2017/09/29 15:47 #

    제가 지금 소스코드가 없어서 그게 같은 값을 전달해주는지는 모르겠는데요,
    작성하던 코드가 있으면 글 작성자께서 한번 테스트해보면 될 것 같습니다.
댓글 입력 영역