Android 高级任务杀手实际上是如何杀死进程的?
上面的问题基本上解释了我的问题。高级任务杀手如何杀死应用程序 我已经尝试了问题答案中提到的方法。正在使用ActivityManager.killBackgroundProcess的程序。Android 高级任务杀手实际上是如何杀死进程的?,android,kill-process,Android,Kill Process,上面的问题基本上解释了我的问题。高级任务杀手如何杀死应用程序 我已经尝试了问题答案中提到的方法。正在使用ActivityManager.killBackgroundProcess的程序。 for(RunningAppProcessInfo runningProcess : runningProcesses){ for(ApplicationInfo nonCompliantApp : nonCompliantApps){
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。不管怎样,我以前尝试过这种方法,但没有成功。请解释一下,如果第一个代码没有杀死一个进程,那么这一个可能是正确的。我不知道高级任务杀手是如何杀死进程的,是吗?我没有写那个应用程序。无论如何,如果这段代码有效,可能就是这个问题的答案。但我认为没有人能给出正确的答案,除非他来自高级任务杀手的团队。你不同意吗?