当应用程序被杀死时清除 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 版本的方法调用(最好是针对一系列设备)。另请注意 .

综上所述,如果使用ApplicationonCreate()清除缓存,操作是有保障的