Advanced Task Killer如何杀死一个进程?

时间:2012-06-14 06:31:23

标签: android kill-process

上面的问题基本上解释了我的问题。 Advanced Task Killer如何杀死一个应用程序?

我尝试了this问题的秒回答中提到的方法。哪个使用ActivityManager.killBackgroundProcesses.

for(RunningAppProcessInfo runningProcess : runningProcesses){
                    for(ApplicationInfo nonCompliantApp : nonCompliantApps){
                        if(runningProcess.pkgList != null) for(String runningAppPackageName : runningProcess.pkgList){
    //                      if(runningProcess.processName.startsWith("gameapps.avatar.")){
    ////                            FileManager.writeToLogFile(SystemApplicationManager.class, "run", LogMessageType.DEBUG, "Game Apps: " + runningProcess.processName + "  pkg: " + runningProcess.pkgList.length + " - " + runningProcess.pkgList[0]);
    //                      }

                            if(runningAppPackageName.equals(nonCompliantApp.packageName)){
                                ActivityManager amgr = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
                                ShellCommandManager.executeShellCommand("kill " + runningProcess.pid);
                            amgr.killBackgroundProcesses(nonCompliantApp.packageName);
                                FileManager.writeToLogFile(SystemApplicationManager.class, "run", LogMessageType.DEBUG, "Process found and killed: " + nonCompliantApp.packageName);
                            }

                            if(!keepRunning)break;
                        }
                    }

问题是,执行上面的代码后,我检查设置 - >应用 - >运行时,才发现同一个应用程序仍在运行。我正在测试它的设备是运行Android ICS的HTC One X.

我做错了什么?非常感谢一些帮助或澄清。

2 个答案:

答案 0 :(得分:1)

它获取正在运行的应用程序并使用其进程ID来终止正在运行的进程。 一小段代码可以帮到你。

int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);

答案 1 :(得分:0)

试试这个:

private static void killProcess(String process_name)
{
     ActivityManager  manager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
     List<ActivityManager.RunningAppProcessInfo> listOfProcesses = manager.getRunningAppProcesses();

     for (ActivityManager.RunningAppProcessInfo process : listOfProcesses)
     {
         if (process.processName.equals(process_name))
         {

                 manager.restartPackage(process.pkgList[0]);
                 Log.e(TAG, "Killed process [" + process.pkgList[0] + "]"); 

         }
     }
}
相关问题