gpt4 book ai didi

java - 使用 Web View 清除 1 个以上 Activity 中的 Web 缓存

转载 作者:行者123 更新时间:2023-12-01 15:12:13 26 4
gpt4 key购买 nike

试图弄清楚为什么我无法从我拥有的多个 WebView 中清除缓存,当我有下面的代码时,我似乎遇到了强制关闭错误。然而,当它只有 1 个 webview 时,它工作得很好。各位有什么建议吗?

由于多个 Webview 而不起作用的部分

Preference customPref = (Preference) findPreference("clearcache");
customPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {

// When Cache Preference is clicked
public boolean onPreferenceClick(Preference preference) {
Toast.makeText(getBaseContext(), "Cache Cleared",
Toast.LENGTH_LONG).show();
WebViewClientDemoActivity.web.clearCache(true);
Commercial.web4.clearCache(true);
Community.web2.clearCache(true);
Distributors.web6.clearCache(true);
Downloads.web7.clearCache(true);
EnlightenInfoPage.web4.clearCache(true);
Support.web3.clearCache(true);
return false;
}
});

仅此而已

WebViewClientDemoActivity.web.clearCache(true);

所有的 WebView 都是死的 WebView ,并且确实被使用,是我没有的声明内容或类似的东西。

或者,如果您知道清除应用程序缓存而不是数据的方法,只需使用首选项点击进行缓存

日志记录

08-29 20:46:14.413: E/AndroidRuntime(337): FATAL EXCEPTION: main
08-29 20:46:14.413: E/AndroidRuntime(337): java.lang.NullPointerException
08-29 20:46:14.413: E/AndroidRuntime(337): at com.jaisonbrooks.enlighten.Prefs$1.onPreferenceClick(Prefs.java:60)
08-29 20:46:14.413: E/AndroidRuntime(337): at android.preference.Preference.performClick(Preference.java:812)
08-29 20:46:14.413: E/AndroidRuntime(337): at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:190)
08-29 20:46:14.413: E/AndroidRuntime(337): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
08-29 20:46:14.413: E/AndroidRuntime(337): at android.widget.ListView.performItemClick(ListView.java:3382)
08-29 20:46:14.413: E/AndroidRuntime(337): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
08-29 20:46:14.413: E/AndroidRuntime(337): at android.os.Handler.handleCallback(Handler.java:587)
08-29 20:46:14.413: E/AndroidRuntime(337): at android.os.Handler.dispatchMessage(Handler.java:92)
08-29 20:46:14.413: E/AndroidRuntime(337): at android.os.Looper.loop(Looper.java:123)
08-29 20:46:14.413: E/AndroidRuntime(337): at android.app.ActivityThread.main(ActivityThread.java:4627)
08-29 20:46:14.413: E/AndroidRuntime(337): at java.lang.reflect.Method.invokeNative(Native Method)
08-29 20:46:14.413: E/AndroidRuntime(337): at java.lang.reflect.Method.invoke(Method.java:521)
08-29 20:46:14.413: E/AndroidRuntime(337): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-29 20:46:14.413: E/AndroidRuntime(337): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-29 20:46:14.413: E/AndroidRuntime(337): at dalvik.system.NativeStart.main(Native Method)

最佳答案

也许其中一个 webview 为 null,访问另一个 Activity 的 UI 元素永远不会有好处。此外,只有当您至少启动一次所有 Activity 时, WebView 才会初始化。为每个 Web 元素添加 null 检查

if(Commercial.web4 != null)
Commercial.web4.clearCache(true);

但是我认为静态元素的设计很糟糕,这些 Activity 只能有一个实例吗?您必须确保所有 Activity 都是单例

编辑:

如果你想删除你自己应用程序的Cache目录,你可以使用

try {
File dir = context.getCacheDir();
if (dir != null && dir.isDirectory()) {
deleteDir(dir);

}
} catch (Exception e) {
e.printStackTrace();
}

关于java - 使用 Web View 清除 1 个以上 Activity 中的 Web 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12187578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com