Hay una nueva API introducida en API 19 (KitKat):
ActivityManager.clearApplicationUserData () .
Recomiendo encarecidamente usarlo en nuevas aplicaciones:
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.
}
Si no desea la forma pirata, también puede ocultar el botón en la interfaz de usuario, por lo que la funcionalidad simplemente no está disponible en teléfonos antiguos.
El conocimiento de este método es obligatorio para cualquiera que lo utilice android:manageSpaceActivity.
Siempre que uso esto, lo hago desde un manageSpaceActivityarchivo que tiene android:process=":manager". Allí, elimino manualmente cualquier otro proceso de mi aplicación. Esto me permite dejar una interfaz de usuario ejecutándose y dejar que el usuario decida a dónde ir.
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);
}
}
}