2011-08-22 6 views
0

장치에서 실행중인 프로세스 목록을 찾으려고합니다. 그 후 현재 응용 프로그램을 제외한 모든 프로세스를 강제 종료하고 싶습니다. 아래 코드를 사용해 보았습니다. 그것의 목록을 처리하지만 그 프로세스를 죽이지 않습니다.android에서 현재 실행중인 응용 프로그램을 강제 종료하는 방법

ActivityManager manager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE); 

List<RunningAppProcessInfo> process = manager.getRunningAppProcesses(); 




    for (int i = 1 ;i< process.size();i++) 

    { 
    int pid = process.get(i).pid;    

    System.out.println("Task " + process.get(i).processName); 

    android.os.Process.killProcess(pid);is 
    } 

위의 코드는 프로세스를 죽이려고했습니다. 한 번 killProcess를 호출 한 후 다시 getRunningAppProcess()를 호출하여 프로세스가 죽었는지 확인합니다. 여전히 모든 프로세스를 보여줍니다.

+0

왜이 작업을 수행하려고합니까? – cjk

+0

이것은 내 요구 사항 중 하나입니다 ... 내 응용 프로그램이 실행될 때 다른 모든 응용 프로그램을 닫고 싶습니다. – Nithi

+1

하지만 왜? 나는 100 만 파운드를 원하지만 좋은 것들을 사고 싶기 때문에. Android가 포 그라운드에 있지 않을 때 애플리케이션을 관리하는 방법을 이해하고 있습니까? 실제로는 꽤 똑똑하기 때문에 작업 킬러 응용 프로그램이 필요하지 않습니다. – cjk

답변

3

처리 목록은 나와 있지만 프로세스를 죽이지는 않습니다.

물론. killProcess()을 사용하여 다른 프로세스를 종료 할 수있는 권한이 없습니다. 왜 그런 생각을했을지 몰라.

우리는 배경 응용 프로그램뿐만 아니라 모든 전경을 죽이고 싶습니다.

운영체제가 충돌합니다.

응용 프로그램 만 실행하려는 경우 자신의 펌웨어와 자신의 OS 및 고유 한 GUI 프레임 워크를 사용하여 자신의 장치를 만들고 응용 프로그램을 해당 장치에 배치 한 다음 해당 장치를 배포하십시오.

+0

몇 가지 샘플 응용 프로그램을 만들었습니다. 다른 응용 프로그램을 닫으려고하는 중입니다. killprocess()에서 너무 일어나지 않습니다. – Nithi

+0

@Ram : 이는 하나의 프로세스가 다른 프로세스를 종료 할 권한이 없기 때문입니다. – CommonsWare

1

killBackgroundProcesses() (패키지 이름 필요)를 사용해보십시오. KILL_BACKGROUND_PROCESSES 권한이 필요합니다. 특별한 허가없이 자신의 프로세스를 종료 할 수 있습니다 (마지막으로해야 함). 그래도 작동하지 않으면 전화를 뿌리로 내리고 루트로해야합니다.

+1

나는 이것을 시험해 보았다. 일하는 사람들은 com.android.media를 죽이려고했으나 죽지는 않았다. 내장 응용 프로그램을 죽이는 데 몇 가지 제한이 있다고 생각합니다. 잘못하면 수정하십시오. – Nithi

관련 문제