Há uma nova API introduzida na API 19 (KitKat):
ActivityManager.clearApplicationUserData () .
Eu recomendo fortemente usá-lo em novos aplicativos:
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.
}
Se você não quiser o jeito hacky, também pode ocultar o botão na IU, de forma que essa funcionalidade não esteja disponível em telefones antigos.
O conhecimento deste método é obrigatório para todos os usuários android:manageSpaceActivity
.
Sempre que eu uso isso, eu o faço a partir de um manageSpaceActivity
que tem android:process=":manager"
. Lá, eu mato manualmente quaisquer outros processos do meu aplicativo. Isso me permite deixar uma IU continuar em execução e permitir que o usuário decida para onde ir em seguida.
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);
}
}
}