上面的问题基本上解释了我的问题。 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.
我做错了什么?非常感谢一些帮助或澄清。
答案 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] + "]");
}
}
}