博主做了一个小游戏平台,有意思,欢迎参观。
用途
用于APP内部的重置功能实现。
方案一:利用命令行pm clear 包名,系统级别清除App数据
优点
和任务管理器里面清除所有数据的操作一致,会删除所有的APP数据。重新进入APP还需重新申请权限。
缺点
系统会直接杀掉APP进程,无法进行拉起APP的操作。
代码
public static Process clearAppUserData(String packageName) {
Process p = execRuntimeProcess("pm clear " + packageName);
return p;
}
public static Process execRuntimeProcess(String commond) {
Process p = null;
try {
p = Runtime.getRuntime().exec(commond);
} catch (IOException e) {
e.printStackTrace();
}
return p;
}
方案二:手动删除内部储存和外部储存
优点
由自身控制,可以重新拉起APP。
缺点
1.没有系统级的清除那么彻底,比如重新拉起后不需要重新申请权限。当然数据库,SharePreferences相关的通通都会删掉的
2.因为数据库文件被删除,所以重新拉起启动页时需要删除当前进程,此时会黑屏一下。
代码
注意:说明一点下面代码中的ApplicationManager.getApplication()其实是获取了当前app的Application对象,也可以替换成context。
public void use(){
//使用
clearPublic();
clearPublic();
restartApp();
}
public static void restartApp() {
Activity activity = getActivity();
final Intent intent = activity.getPackageManager().getLaunchIntentForPackage(activity.getPackageName());