В API 19 (KitKat) є новий API:
ActivityManager.clearApplicationUserData () .
Настійно рекомендую використовувати його в нових програмах:
import android.os.Build.*;
if (VERSION_CODES.KITKAT <= VERSION.SDK_INT) {
((ActivityManager)context.getSystemService(ACTIVITY_SERVICE))
.clearApplicationUserData(); // note: it has a return value!
} else {
// use old hacky way, which can be removed
// once minSdkVersion goes above 19 in a few years.
}
Якщо ви не хочете хакітського способу, ви також можете приховати кнопку в інтерфейсі, так що функціональність просто не доступна на старих телефонах.
Знання цього методу є обов'язковим для всіх, хто використовує android:manageSpaceActivity.
Щоразу, коли я цим користуюся, я роблю це з того, manageSpaceActivityщо має android:process=":manager". Там я вручну вбиваю будь-які інші процеси свого додатка. Це дозволяє мені дозволити користувальницькому інтерфейсу продовжувати працювати і дозволити користувачеві вирішувати, куди йти далі.
private static void killProcessesAround(Activity activity) throws NameNotFoundException {
ActivityManager am = (ActivityManager)activity.getSystemService(Context.ACTIVITY_SERVICE);
String myProcessPrefix = activity.getApplicationInfo().processName;
String myProcessName = activity.getPackageManager().getActivityInfo(activity.getComponentName(), 0).processName;
for (ActivityManager.RunningAppProcessInfo proc : am.getRunningAppProcesses()) {
if (proc.processName.startsWith(myProcessPrefix) && !proc.processName.equals(myProcessName)) {
android.os.Process.killProcess(proc.pid);
}
}
}