经过一番研究后,我发现Android喜欢在安装时缓存应用程序的某些部分,以提高运行时的性能。
有没有办法阻止Android从我的应用中缓存内容?
我通过我的网站分享我的应用程序,用户手动安装和更新应用程序。一旦我更新我的应用程序,一些活动和代码部分似乎就会缓存在他们的设备上。
答案 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的解决方案似乎很好。