当应用程序被杀死时清除 webview 上的缓存
Clear cache on webview when the app is killed
我在 Whosebug 上看到了其他答案,但 none 帮助我解决了我的问题。
我在 activity 中有一个带有 webview 的应用程序,我想在应用程序被终止时清除缓存。
下面是我用来删除缓存的代码-
public static void deleteCache(Context context) {
try {
File dir = context.getCacheDir();
deleteDir(dir);
} catch (Exception e) {}
}
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;
}
}
return dir.delete();
} else if(dir!= null && dir.isFile()) {
return dir.delete();
} else {
return false;
}
我想在应用程序被杀死时或应用程序即将被杀死之前清除缓存,我在哪里调用 deleteCache(this)
?
我试着把它放在 activity 的 OnDestroy()
方法中,但是当我按下 activity 上的后退按钮时它会清除缓存,这 不是我的要求.
所以我添加了
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
所以我的 activity 在我按下后退按钮时根本不会调用 onDestroy() 也不会终止应用程序。
我需要在哪里清除生命周期方法的缓存?
和
在我的应用程序被终止之前,我在哪里可以触发事件以 javascript 运行?
离开activity
之前把这个放上去
WebView.clearCache(真);
如果系统 "decides" 终止您的应用程序处于后台,您将不会调用任何回调。如果您作为开发人员不能依赖它,也许您应该重新考虑解决问题的方法?...
您可以肯定的是,当您的应用进程创建时 。那么为什么不从方法内清除缓存,即不是在应用程序被杀死时,而是在它启动时?
I followed this approach and created a service and cleared my cache at onTaskRemoved()
.
很好的方法,但根据我的经验,在极少数情况下 onTaskRemoved()
不能保证被调用。我建议测试不同 OS 版本的方法调用(最好是针对一系列设备)。另请注意 .
综上所述,如果使用Application
的onCreate()
清除缓存,操作是有保障的
我在 Whosebug 上看到了其他答案,但 none 帮助我解决了我的问题。
我在 activity 中有一个带有 webview 的应用程序,我想在应用程序被终止时清除缓存。
下面是我用来删除缓存的代码-
public static void deleteCache(Context context) {
try {
File dir = context.getCacheDir();
deleteDir(dir);
} catch (Exception e) {}
}
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;
}
}
return dir.delete();
} else if(dir!= null && dir.isFile()) {
return dir.delete();
} else {
return false;
}
我想在应用程序被杀死时或应用程序即将被杀死之前清除缓存,我在哪里调用 deleteCache(this)
?
我试着把它放在 activity 的 OnDestroy()
方法中,但是当我按下 activity 上的后退按钮时它会清除缓存,这 不是我的要求.
所以我添加了
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
所以我的 activity 在我按下后退按钮时根本不会调用 onDestroy() 也不会终止应用程序。
我需要在哪里清除生命周期方法的缓存? 和 在我的应用程序被终止之前,我在哪里可以触发事件以 javascript 运行?
离开activity
之前把这个放上去WebView.clearCache(真);
如果系统 "decides" 终止您的应用程序处于后台,您将不会调用任何回调。如果您作为开发人员不能依赖它,也许您应该重新考虑解决问题的方法?...
您可以肯定的是,当您的应用进程创建时
I followed this approach and created a service and cleared my cache at
onTaskRemoved()
.
很好的方法,但根据我的经验,在极少数情况下 onTaskRemoved()
不能保证被调用。我建议测试不同 OS 版本的方法调用(最好是针对一系列设备)。另请注意
综上所述,如果使用Application
的onCreate()
清除缓存,操作是有保障的