ฉันมี WebView ในหนึ่งในกิจกรรมของฉันและเมื่อโหลดหน้าเว็บเพจดังกล่าวจะรวบรวมข้อมูลพื้นหลังบางส่วนจาก Facebook
สิ่งที่ฉันเห็นคือหน้าที่แสดงในแอปพลิเคชันนั้นเหมือนกันทุกครั้งที่เปิดและรีเฟรชแอป
ฉันได้ลองตั้งค่า 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");
}
}
}
อย่างไรก็ตามสิ่งนี้ก็ยังไม่เปลี่ยนแปลงสิ่งที่แสดงหน้านี้ บนเบราว์เซอร์เดสก์ท็อปของฉันฉันได้รับโค้ด html ที่แตกต่างกันไปยังหน้าเว็บที่สร้างใน WebView ดังนั้นฉันจึงรู้ว่า WebView ต้องแคชที่ไหนสักแห่ง
ในช่อง IRC ฉันถูกชี้ไปที่การแก้ไขเพื่อลบแคชออกจากการเชื่อมต่อ URL แต่ยังไม่เห็นวิธีนำไปใช้กับ WebView
http://www.androidsnippets.org/snippets/45/
หากฉันลบแอปพลิเคชันของฉันและติดตั้งใหม่ฉันจะได้รับหน้าเว็บกลับมาเป็นเวอร์ชันล่าสุดนั่นคือเวอร์ชันที่ไม่แคช ปัญหาหลักคือการเปลี่ยนแปลงที่เกิดขึ้นกับลิงก์ในหน้าเว็บดังนั้นส่วนหน้าของหน้าเว็บจึงไม่มีการเปลี่ยนแปลงโดยสิ้นเชิง
mWebView.getSettings().setAppCacheEnabled(false);
ไม่ได้ผล?