본문 바로가기
Development/Android

android background에 있는 app, foreground로 올리기

by Sonagiya 2013. 5. 7.
728x90
반응형

이 방법에 대해 말하기 전에 기본적으로 android activity와 task에 대해 간단한 이해를 하고 있어야 한다.

android에서 activity란 app을 구성하고 있는 가장 기본적인 화면으로 텍스트, 이미지, 버튼 등으로 구성되며 한화면을 차지한다.

한개의 app은 여러개의 activity로 구성될수 있는데 activity들을 여러개 실행하게 되면 stack 형식으로 관리하게 되는데 이것을 task라 부른다.(또는 Activity stack)

그리고 제일위에 있어 화면에 보일수 있는 Activity를 topActivity라 부른다.

간단히 그림으로 보면 다음과 같다.

이제 본론으로 들어가면 (원하는 app의 package 명을 알고 있어야 한다.)

우선 실행되고 있는 app 정보들을 불러오는것이 필요하다.

ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks =am.getRunningTasks(3); //얻어올 task갯수 원하는 만큼의 수를 입력하면 된다.

이 결과 리스트에 최근에 사용한 task순으로 정보가 쌓이게 된다.

그 후 task의 topActivity의 package name을 검색해 일치하는 app이 있으면 ActivityManager의 moveTaskToFront함수를 이용해 foreground로 올리면 된다.

if(!tasks.isEmpty()) {

    int tasksSize = tasks.size();
    for(int i = 0; i >= tasksSize;  i++) {

        RunningTaskInfo taskinfo = tasks.get(i);
        if(taskinfo.topActivity.getPackageName().equals(패키지명)) {

            am.moveTaskToFront(taskinfo.id, 0);
        }
    }
}

반응형

댓글