Saya memiliki WebView di salah satu Aktivitas saya, dan saat memuat halaman web, halaman tersebut mengumpulkan beberapa data latar belakang dari Facebook.
Apa yang saya lihat, adalah halaman yang ditampilkan dalam aplikasi sama setiap kali aplikasi dibuka dan disegarkan.
Saya sudah mencoba mengatur WebView agar tidak menggunakan cache dan menghapus cache dan riwayat WebView.
Saya juga mengikuti saran di sini: Bagaimana cara mengosongkan cache untuk WebView?
Tetapi tidak ada yang berhasil, apakah ada yang punya ide tentang saya dapat mengatasi masalah ini karena ini adalah bagian penting dari aplikasi saya.
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"));
Jadi saya menerapkan saran pertama (Meskipun mengubah kode menjadi rekursif)
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");
}
}
}
Namun ini masih belum mengubah apa yang ditampilkan halaman. Di browser desktop saya, saya mendapatkan kode html yang berbeda ke halaman web yang dihasilkan di WebView jadi saya tahu WebView harus di-cache di suatu tempat.
Pada saluran IRC saya diarahkan ke perbaikan untuk menghapus cache dari Koneksi URL tetapi belum dapat melihat bagaimana menerapkannya ke WebView.
http://www.androidsnippets.org/snippets/45/
Jika saya menghapus aplikasi saya dan menginstalnya kembali, saya bisa mendapatkan kembali halaman web tersebut, yaitu versi non-cache. Masalah utamanya adalah perubahan dilakukan pada tautan di halaman web, jadi bagian depan halaman web sama sekali tidak berubah.
mWebView.getSettings().setAppCacheEnabled(false);
tidak berhasil?