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