Android ActivityManager killBackgroundProcess无法正常工作

时间:2010-09-04 20:19:00

标签: android android-activity process activity-manager

我正在使用eclipse。我试图在我的应用程序中杀死一个进程。但是,在eclipse中它似乎不知道ActivityManager中的killBackgroundProcess的提示,它不会让我继续。我读到你必须拥有杀死后台进程的权限,并且已经添加了它从清单中无法识别的权限。这是我尝试使用的代码:

ActivityManager activityManager = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
activityManager.killBackgroundProcess(myProcessId);

5 个答案:

答案 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]);
                    }
                }
            }
    }