欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android清除应用缓存的两种方法

程序员文章站 2022-03-23 16:41:38
第一种使用activitymanager中的clearapplicationuserdata方法,代码如下:activitymanager am = (activitymanager) getsyst...

第一种

使用activitymanager中的clearapplicationuserdata方法,代码如下:

activitymanager am = (activitymanager) getsystemservice(context.activity_service);
am.clearapplicationuserdata();

这种方式的问题就是不知清除cache,连带应用的data也删除了。如下图所示:

Android清除应用缓存的两种方法

第二种

使用packagemanager中的deleteapplicationcachefiles方法,这个api是隐藏的,所以需要用反射来调用,代码如下:

packagemanager packagemanager = context.getpackagemanager();
method method;
try {
  method = packagemanager.class.getdeclaredmethod("deleteapplicationcachefiles", string.class, ipackagedataobserver.class);
  method.invoke(packagemanager, packagename, new clearuserdataobserver());
} catch (nosuchmethodexception | illegalaccessexception | invocationtargetexception e) {
  e.printstacktrace();
}

static class clearuserdataobserver extends ipackagedataobserver.stub {
  public void onremovecompleted(final string packagename, final boolean succeeded) {
    log.i(tag, "ipackagedataobserver succeeded: " + succeeded);
  }
}

这种方式只会清除cache,有需要只清除缓存,可以是用这种方式。ipackagedataobserver需要自己放到项目的aidi文件夹中,如下图所示:

Android清除应用缓存的两种方法

两种方式都需要有系统权限,声明为系统应用并且签系统签名才能调用成功。

以上就是android清除应用缓存的两种方法的详细内容,更多关于android清除应用缓存的资料请关注其它相关文章!