我正在使用eclipse。我试图在我的应用程序中杀死一个进程。但是,在eclipse中它似乎不知道ActivityManager中的killBackgroundProcess的提示,它不会让我继续。我读到你必须拥有杀死后台进程的权限,并且已经添加了它从清单中无法识别的权限。这是我尝试使用的代码:
ActivityManager activityManager = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
activityManager.killBackgroundProcess(myProcessId);
答案 0 :(得分:3)
确保您定位到API级别8,因为该方法仅在Android 2.2中添加。
答案 1 :(得分:2)
方法签名是
public void killBackgroundProcesses (String packageName)
不
public void killBackgroundProcess (int processID)
以下是CODE:
public static void killThisPackageIfRunning(final Context context, String packageName){
ActivityManager activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
activityManager.killBackgroundProcesses(packageName);
}
但这仅适用于> = API Level 8,因为此方法是在Android 2.2中添加的。
答案 2 :(得分:0)
参数是包名称不是processId。尝试传递类似:
myActivity.getApplication().getPackageName()
作为论据。
答案 3 :(得分:0)
确保使用最顶层的Activity调用killBackgroundProcesses。
答案 4 :(得分:0)
您可以尝试下面这些代码,它适用于我。
public static void clearMemory(Context context) {
ActivityManager activityManger = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> list = activityManger.getRunningAppProcesses();
if (list != null)
for (int i = 0; i < list.size(); i++) {
ActivityManager.RunningAppProcessInfo apinfo = list.get(i);
String[] pkgList = apinfo.pkgList;
if (apinfo.importance > ActivityManager.RunningAppProcessInfo.IMPORTANCE_PERCEPTIBLE ) {
for (int j = 0; j < pkgList.length; j++) {
activityManger.killBackgroundProcesses(pkgList[j]);
}
}
}
}