在应用程序被杀死时清除webview上的缓存

时间:2017-04-25 06:16:04

标签: android caching android-webview android-lifecycle android-ondestroy

我在stackoverflow上看到了其他答案,但没有一个能帮助我解决我的问题。

我在一个活动中有一个带webview的应用程序,我希望在应用程序被杀死时清除缓存。

以下是我用来删除缓存的代码 -

library(dplyr)

df %>% count(mother_age_group, wt = birth_count) %>% 
    ggplot(aes(mother_age_group, n)) + 
    geom_col()

我希望在应用程序被杀或应用程序被杀之前清除缓存,我应该在哪里调用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)方法中,但是当我按下不是我的要求的活动上的后退按钮时,它会清除缓存。

所以我添加了

OnDestroy()

因此,当我按下按钮时,我的活动根本不会调用onDestroy(),也不会杀死应用程序。

在哪里需要清除生命周期方法的缓存? 和 在我的应用被杀之前,我在哪里可以触发事件到javascript函数?

2 个答案:

答案 0 :(得分:0)

在离开活动之前先把它放好

WebView.clearCache(真);

答案 1 :(得分:0)

如果系统“决定”在后台杀死您的应用,则不会调用任何回调。如果您作为开发人员不能依赖于此,那么您是否应该重新考虑解决问题的方法?...

您确定知道的是,当您的应用程序进程创建时Application's onCreate() method is called。那么为什么不从方法中清除缓存,即不是在应用程序查杀时,而是在它启动时?

  

我关注this approach并创建了一项服务,并在onTaskRemoved()清除了我的缓存。

很好的方法,但是,根据我的经验,在极少数情况下onTaskRemoved()不能保证被调用。我建议测试不同操作系统版本的方法调用(最好是针对一系列设备)。另请注意onTaskRemoved() is only called when a user removes your app from the recent task list

总而言之,如果您使用Application的{​​{1}}清除缓存,则可以保证执行操作。

相关问题