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);
}
}
}
Estou apenas colocando o tutorial do link ihrupin postado aqui neste post.
Portanto, se quiser que um botão faça isso, você precisa chamar MyApplication.getInstance (). clearApplicationData () de um onClickListener
Atualizar: sua
SharedPreferences
instância pode reter seus dados e recriar o arquivo de preferências depois de excluí-lo. Então você vai querer pegar seuSharedPreferences
objeto eAtualizar:
Você precisa adicionar
android:name="your.package.MyApplication"
aoapplication tag
AndroidManifest.xml interno, caso ainda não tenha feito isso. Caso contrário ,MyApplication.getInstance()
retornanull
, resultando em um NullPointerException .fonte
combinar código de 2 respostas:
Aqui está a resposta com base na fonte combinada resultante
fonte
A maneira mais simples de fazer isso é
Isso limpará os dados e removerá seu aplicativo da memória. É equivalente à opção de limpar dados em Configurações -> Gerenciador de aplicativos -> Seu aplicativo -> Limpar dados
fonte
pm
) que podem não existir é arriscado. Eles não fazem parte do "contrato" do Android SDK e, portanto, se existem em um determinado dispositivo ou se se comportam da mesma forma que em outros dispositivos depende dos fabricantes e desenvolvedores de ROM personalizadas.O que eu uso em todos os lugares:
fonte
Se você quiser um hack menos prolixo:
fonte