Ho una visualizzazione Web in una delle mie attività e quando carica una pagina Web, la pagina raccoglie alcuni dati in background da Facebook.
Quello che vedo però, è che la pagina visualizzata nell'applicazione è la stessa ogni volta che l'app viene aperta e aggiornata.
Ho provato a impostare il WebView per non utilizzare la cache e cancellare la cache e la cronologia del WebView.
Ho anche seguito il suggerimento qui: come svuotare la cache per WebView?
Ma niente di tutto questo funziona, qualcuno ha qualche idea su come posso superare questo problema perché è una parte vitale della mia applicazione.
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"));
Quindi ho implementato il primo suggerimento (sebbene abbia cambiato il codice per essere ricorsivo)
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");
}
}
}
Tuttavia, ciò non ha ancora cambiato ciò che la pagina sta visualizzando. Sul mio browser desktop ricevo codice html diverso dalla pagina web prodotta in WebView, quindi so che WebView deve essere memorizzato nella cache da qualche parte.
Sul canale IRC mi è stato indicato una correzione per rimuovere il caching da una connessione URL ma non riesco ancora a vedere come applicarlo a un WebView.
http://www.androidsnippets.org/snippets/45/
Se elimino la mia applicazione e la reinstallo, posso aggiornare la pagina web, ovvero una versione non memorizzata nella cache. Il problema principale è che le modifiche vengono apportate ai collegamenti nella pagina Web, quindi il front-end della pagina Web è completamente invariato.
mWebView.getSettings().setAppCacheEnabled(false);
non ha funzionato?