मेरे पास मेरी गतिविधियों में एक WebView है, और जब यह एक वेबपेज लोड करता है, तो पृष्ठ फेसबुक से कुछ पृष्ठभूमि डेटा इकट्ठा करता है।
हालांकि मैं जो भी देख रहा हूं, वह है कि एप्लिकेशन को प्रदर्शित किया जाने वाला पृष्ठ हर बार वही होता है जब ऐप खोला और ताज़ा किया जाता है।
मैंने WebView को कैश का उपयोग नहीं करने और WebView के कैश और इतिहास को साफ़ करने की कोशिश की है।
मैंने यहाँ भी सुझाव का पालन किया है: WebView के लिए कैश कैसे खाली करें?
लेकिन इनमें से कोई भी काम नहीं करता है, क्या किसी के पास मेरे विचार हैं जो इस समस्या को दूर कर सकते हैं क्योंकि यह मेरे आवेदन का एक महत्वपूर्ण हिस्सा है।
mWebView.setWebChromeClient(new WebChromeClient()
{
public void onProgressChanged(WebView view, int progress)
{
if(progress >= 100)
{
mProgressBar.setVisibility(ProgressBar.INVISIBLE);
}
else
{
mProgressBar.setVisibility(ProgressBar.VISIBLE);
}
}
});
mWebView.setWebViewClient(new SignInFBWebViewClient(mUIHandler));
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.clearHistory();
mWebView.clearFormData();
mWebView.clearCache(true);
WebSettings webSettings = mWebView.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
Time time = new Time();
time.setToNow();
mWebView.loadUrl(mSocialProxy.getSignInURL()+"?time="+time.format("%Y%m%d%H%M%S"));
इसलिए मैंने पहला सुझाव लागू किया (हालांकि पुनरावर्ती होने के लिए कोड बदल दिया गया)
private void clearApplicationCache() {
File dir = getCacheDir();
if (dir != null && dir.isDirectory()) {
try {
ArrayList<File> stack = new ArrayList<File>();
// Initialise the list
File[] children = dir.listFiles();
for (File child : children) {
stack.add(child);
}
while (stack.size() > 0) {
Log.v(TAG, LOG_START + "Clearing the stack - " + stack.size());
File f = stack.get(stack.size() - 1);
if (f.isDirectory() == true) {
boolean empty = f.delete();
if (empty == false) {
File[] files = f.listFiles();
if (files.length != 0) {
for (File tmp : files) {
stack.add(tmp);
}
}
} else {
stack.remove(stack.size() - 1);
}
} else {
f.delete();
stack.remove(stack.size() - 1);
}
}
} catch (Exception e) {
Log.e(TAG, LOG_START + "Failed to clean the cache");
}
}
}
हालाँकि यह अभी भी नहीं बदला है कि पृष्ठ क्या प्रदर्शित कर रहा है। अपने डेस्कटॉप ब्राउजर पर मुझे WebView में उत्पादित वेब पेज पर अलग-अलग html कोड मिल रहे हैं, इसलिए मुझे पता है कि WebView कहीं कैशिंग होना चाहिए।
आईआरसी चैनल पर मुझे एक URL कनेक्शन से कैशिंग हटाने के लिए एक ठीक करने के लिए कहा गया था, लेकिन यह नहीं देख सकता कि इसे अभी तक किसी WebView पर कैसे लागू किया जाए।
http://www.androidsnippets.org/snippets/45/
यदि मैं अपने एप्लिकेशन को हटाता हूं और इसे फिर से स्थापित करता हूं, तो मैं वेबपेज को अद्यतित कर सकता हूं, अर्थात गैर-कैश्ड संस्करण। मुख्य समस्या वेबपेज में लिंक के लिए किए गए बदलाव हैं, इसलिए वेबपेज का अगला छोर पूरी तरह से अपरिवर्तित है।
mWebView.getSettings().setAppCacheEnabled(false);
काम नहीं किया?