W API 19 (KitKat) wprowadzono nowy interfejs API:
ActivityManager.clearApplicationUserData () .
Gorąco polecam używanie go w nowych aplikacjach:
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.
}
Jeśli nie chcesz tego hakerskiego sposobu, możesz także ukryć przycisk w interfejsie użytkownika, aby funkcja nie była dostępna na starych telefonach.
Znajomość tej metody jest obowiązkowa dla wszystkich użytkowników android:manageSpaceActivity
.
Za każdym razem, gdy tego używam, robię to z pliku manageSpaceActivity
który ma android:process=":manager"
. Tam ręcznie kończę wszystkie inne procesy mojej aplikacji. To pozwala mi pozostawić uruchomiony interfejs użytkownika i pozwolić użytkownikowi zdecydować, gdzie ma iść dalej.
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);
}
}
}
Po prostu umieszczam samouczek z linku ihrupin zamieszczonego tutaj w tym poście.
Więc jeśli chcesz, aby przycisk to zrobił, musisz wywołać MyApplication.getInstance (). clearApplicationData () z poziomu onClickListener
Aktualizacja: Twoja
SharedPreferences
instancja może przechowywać Twoje dane i ponownie utworzyć plik preferencji po jego usunięciu. Więc będziesz chciał dostać swójSharedPreferences
przedmiot iAktualizacja:
Musisz dodać
android:name="your.package.MyApplication"
doapplication tag
wewnętrznego pliku AndroidManifest.xml, jeśli tego nie zrobiłeś. W przeciwnym razieMyApplication.getInstance()
zwracanull
, w wyniku czego NullPointerException .źródło
połącz kod z 2 odpowiedzi:
Oto wynikowa połączona odpowiedź oparta na źródłach
źródło
Najprostszym sposobem na to jest
Spowoduje to wyczyszczenie danych i usunięcie aplikacji z pamięci. Jest to równoważne z opcją wyczyszczenia danych w Ustawieniach -> Menedżer aplikacji -> Twoja aplikacja -> Wyczyść dane
źródło
pm
), Które mogą nie istnieć, jest ryzykowne. Nie są one częścią „umowy” Android SDK, więc to, czy istnieją na danym urządzeniu, czy też zachowują się tak samo, jak na innych urządzeniach, zależy od producentów i niestandardowych programistów ROM.Czego używam wszędzie:
źródło
Jeśli chcesz mniej rozwlekłych hacków:
źródło