4

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

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

5 回答 5

3

确保您的目标是 API 级别 8,因为该方法仅在 Android 2.2 中添加。

于 2010-09-04T20:23:14.393 回答
2

方法签名是

public void killBackgroundProcesses (String packageName)

不是

public void killBackgroundProcess (int processID)

以下是工作代码:

public static void killThisPackageIfRunning(final Context context, String packageName){
    ActivityManager activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
    activityManager.killBackgroundProcesses(packageName);
}   

但这仅适用于 >= API 级别 8,因为此方法是在 Android 2.2 中添加的。

于 2011-10-14T12:39:35.840 回答
0

确保您使用最顶层的 Activity 调用 killBackgroundProcesses。

于 2013-03-20T21:16:15.280 回答
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]);
                    }
                }
            }
    }
于 2014-05-27T03:17:20.453 回答
0

参数是包名称而不是 processId。尝试传递类似的东西:

myActivity.getApplication().getPackageName()

作为论据。

于 2010-11-09T22:17:28.837 回答