如何防止app在android中缓存

时间:2017-06-29 07:28:06

标签: android caching xamarin xamarin.android

经过一番研究后,我发现Android喜欢在安装时缓存应用程序的某些部分,以提高运行时的性能。

有没有办法阻止Android从我的应用中缓存内容?

我通过我的网站分享我的应用程序,用户手动安装和更新应用程序。一旦我更新我的应用程序,一些活动和代码部分似乎就会缓存在他们的设备上。

2 个答案:

答案 0 :(得分:2)

您可以在更新之前或关闭应用程序之前每次删除缓存。 用于清除缓存的代码:

 public static void trimCache(Context context) {
      try {
         File dir = context.getCacheDir();
         if (dir != null && dir.isDirectory()) {
            deleteDir(dir);
         }
      } catch (Exception e) {
         // TODO: handle exception
      }
   }

   public static boolean deleteDir(File dir) {
      if (dir != null && dir.isDirectory()) {
         String[] children = dir.list();
         for (int i = 0; i < children.length; i++) {
            boolean success = deleteDir(new File(dir, children[i]));
            if (!success) {
               return false;
            }
         }
      }

      // The directory is now empty so delete it
      return dir.delete();
   }

如果要清除缓存(在更新之前?或覆盖onStop()方法,请在应用程序关闭时清除缓存,请调用Trimcache。

答案 1 :(得分:0)

当您不更新应用时,我看到您的方式也会出现缓存问题。

如果要在升级应用程序时强制提取服务器,可以使用与应用程序版本关联的密钥在共享首选项中存储布尔值。因此,当您安装版本1时,您将获取putsBoolean(version, true),其中版本==&#34; 1&#34;。安装版本2后,您会发现错误,这将触发抓取,然后设置putsBoolean(version, true) - 但在这种情况下版本==&#34; 2&#34;。

如果您在更新时重复使用具有不同含义的信息,则解决方案是将信息存储在缓存的不同部分中,因此不会将其发送到未准备显示它的活动。

否则@ jordy-dieltjens的解决方案似乎很好。