4

私は日食を使用しています。アプリケーションのプロセスを強制終了しようとしています。ただし、日食では、ActivityManagerからのkillBackgroundProcessのヒントを認識していないようであり、続行できません。バックグラウンドプロセスを強制終了する権限が必要であり、マニフェストからも認識されなかった権限をすでに追加していることを読みました。これが私が使おうとしているコードです:

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

5 に答える 5

3

このメソッドはAndroid2.2でのみ追加されたため、APIレベル8をターゲットにしていることを確認してください。

于 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);
}   

ただし、このメソッドはAndroid 2.2で追加されたため、これはAPIレベル8以上でのみ機能します。

于 2011-10-14T12:39:35.840 に答える
0

引数は、processIdではなくパッケージ名です。次のように渡してみてください。

myActivity.getApplication().getPackageName()

引数として。

于 2010-11-09T22:17:28.837 に答える
0

最上位のアクティビティで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 に答える