Etkinliklerimden birinde bir Web Görünümü var ve bir web sayfasını yüklediğinde, sayfa Facebook'tan bazı arka plan verileri toplar.
Yine de gördüğüm şey, uygulamada görüntülenen sayfanın, uygulama her açıldığında ve yenilendiğinde aynı olması.
Web Görünümü'nü önbelleği kullanmayacak şekilde ayarlamayı ve Web Görünümü önbelleğini ve geçmişini temizlemeyi denedim.
Ayrıca buradaki öneriyi de takip ettim: WebView için önbellek nasıl boşaltılır?
Ama bunların hiçbiri işe yaramıyor, kimsenin bu sorunun üstesinden gelebileceğime dair herhangi bir fikri yok, çünkü bu başvurumun hayati bir parçası.
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"));
Bu yüzden ilk öneriyi uyguladım (Kodu özyinelemeli olacak şekilde değiştirmesine rağmen)
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");
}
}
}
Ancak bu, sayfanın görüntülediği şeyi hala değiştirmedi. Masaüstü tarayıcımda WebView'da üretilen web sayfasına farklı html kodu alıyorum, bu nedenle WebView’un bir yerde önbelleğe alması gerektiğini biliyorum.
IRC kanalında, bir URL Bağlantısından önbelleğe almayı kaldırmak için bir düzeltmeye yönlendirildim, ancak henüz bir WebView'a nasıl uygulanacağını göremiyorum.
http://www.androidsnippets.org/snippets/45/
Uygulamamı silip yeniden yüklersem, web sayfasını, yani önbelleğe alınmamış bir sürümü, güncelleyebilirim. Temel sorun, web sayfasındaki bağlantılarda yapılan değişikliklerin web sayfasının ön ucunun tamamen değişmemiş olmasıdır.
mWebView.getSettings().setAppCacheEnabled(false);
çalışmadı mı?