Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 高级任务杀手实际上是如何杀死进程的?_Android_Kill Process - Fatal编程技术网

Android 高级任务杀手实际上是如何杀死进程的?

Android 高级任务杀手实际上是如何杀死进程的?,android,kill-process,Android,Kill Process,上面的问题基本上解释了我的问题。高级任务杀手如何杀死应用程序 我已经尝试了问题答案中提到的方法。正在使用ActivityManager.killBackgroundProcess的程序。 for(RunningAppProcessInfo runningProcess : runningProcesses){ for(ApplicationInfo nonCompliantApp : nonCompliantApps){

上面的问题基本上解释了我的问题。高级任务杀手如何杀死应用程序

我已经尝试了问题答案中提到的方法。正在使用ActivityManager.killBackgroundProcess的程序。

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;
                        }
                    }
问题是,在执行上述代码后,我在设置->应用->运行下进行检查,结果发现相同的应用程序仍在运行。我正在测试的设备是运行安卓ICS的HTC One X


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

它获取正在运行的应用程序,并使用其进程id终止正在运行的进程。 一小段代码可能会对您有所帮助

int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
试试这个:

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] + "]"); 

         }
     }
}
私有静态进程(字符串进程\u名称)
{
ActivityManager=(ActivityManager)context.getSystemService(context.ACTIVITY_服务);
List ListofProcess=manager.getRunningAppProcess();
for(ActivityManager.RunningAppProcessInfo进程:进程列表)
{
if(process.processName.equals(process_name))
{
manager.restartPackage(process.pkgList[0]);
Log.e(标记“Killed进程[“+process.pkgList[0]+“]”);
}
}
}

您可以查看它,它似乎满足了您的要求。谢谢。但是,这样做只会扼杀我自己的进程,对吗?我的意思是,你传递给进程的pid。killProcess方法是被终止进程的id,对吗?在那里输入pid不起作用。它只允许您终止属于流程包的流程或流程启动的其他流程。内核阻止您执行AFAIK。不管怎样,我以前尝试过这种方法,但没有成功。请解释一下,如果第一个代码没有杀死一个进程,那么这一个可能是正确的。我不知道高级任务杀手是如何杀死进程的,是吗?我没有写那个应用程序。无论如何,如果这段代码有效,可能就是这个问题的答案。但我认为没有人能给出正确的答案,除非他来自高级任务杀手的团队。你不同意吗?