2014-03-06 57 views
5

老實說,我不確定是否應該在SO上發佈這個;無論如何,讓我們互相幫助。在Android上爲WebApps關閉緩存

我正在構建一個網絡應用程序,我經常在我的Android手機上檢查此時。與其始終將其上傳到Phonegap或其他內容不同,我已配置了一個帶有指向Web應用程序內容(在線託管)的iFrame的簡單頁面。

這樣做的壞處:爲了查看更改,我必須清理應用程序緩存。否則,'以前的'版本仍然顯示(因爲它滯留在緩存中)。

所以我希望是否有一個選項可以在關閉所有對象和文件的緩存的頁面上打開/關閉Android/Configure?

非常感謝你們!

爲了讓我如何工作的想法..

------------------------------------------------- 
|     My Phone     | 
|     With a      | 
|            | 
| ----------------------------------------- | 
| |   Cordova/Phonegap   | | 
| |   Application which   | | 
| |   loads a      | | 
| |          | | 
| | -------------------------------- | | 
| | |  Website with   | | | 
| | |  iFrame     | | | 
| | |  height:100%    | | | 
| | |  width:100%    | | | 
| | |        | | | 
| | | ------------------------- | | | 
| | | |      | | | | 
| | | |  HTML5   | | | | 
| | | |  Responsive  | | | | 
| | | |  Webpage   | | | | 
| | | | (The WebApp itself) | | | | 
| | | |      | | | | 
| | | ------------------------- | | | 
| | |        | | | 
| | |        | | | 
| | --------------------------------- | | 
| |          | | 
| ---------------------------------------- | 
|            | 
------------------------------------------------- 
+0

你使用的是android webview嗎? –

+0

猜猜不?它只是一個HTML5響應式頁面,加載在一個iframe中,包裝在Cordova應用程序中。沒有任何配置關於webview。 –

+0

有一種方法可以禁用Android中的瀏覽器緩存,但我無法想象你的方式。你可以請張貼一些代碼嗎? – gokhanakkurt

回答

8

有兩種方法來禁用科爾多瓦/ PhoneGap的應用程序緩存。

  1. 第一個是在加載您的內容時配置webview設置。
  2. 第二種方法是在每次要刷新頁面時向您的url添加時間戳記值。這更可能是一種解決方法。

我會詳細描述這兩個選項。

首個解決方案

對於科爾多瓦的新版本(5.3.3)

添加以下進口

import android.webkit.WebSettings; 
import android.webkit.WebView; 

覆蓋的onResume喜歡這個 -

@Override 
protected void onResume() { 
    super.onResume(); 
    // Disable caching .. 
    WebView wv = (WebView) appView.getEngine().getView(); 
    WebSettings ws = wv.getSettings(); 

    ws.setAppCacheEnabled(false); 
    ws.setCacheMode(WebSettings.LOAD_NO_CACHE); 
    loadUrl(launchUrl); // launchUrl is the default url specified in Config.xml 
} 

== =====

對於舊版本的科爾多瓦

的假設,你裝上你的Activity類內容。

你可以配置你的webview,當它加載到你的Activity類。

以下是示例代碼片段,您可以瞭解如何在Phonegap/Cordova應用中禁用瀏覽器緩存。

public class MainActivity extends DroidGap { 
    @Override 
    protected void onResume() { 
     super.onResume(); 
     // Disable caching .. 
     super.appView.getSettings().setAppCacheEnabled(false); 
     super.appView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
     super.loadUrl("http://blabla.com"); 
    } 
} 

正如你所看到的,無論何時觸發onResume()事件,這意味着只要你的應用程序是在前臺你的網頁的內容將被重新加載該代碼塊將加載內容。

下面的一段代碼可以防止在web視圖上緩存。

super.appView.getSettings().setAppCacheEnabled(false); 
super.appView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 

第二種解決

該解決方案是非常愚蠢的,但是按照我們的期望。對於你的情況,這可能會有所幫助。

您可以簡單地在URL的末尾添加時間戳值。以下是示例代碼片段。

public class MainActivity extends DroidGap { 

    @Override 
    protected void onResume() { 
     super.onResume(); 

     StringBuilder urlBuilder = new StringBuilder("http://blabla.com"); 
     urlBuilder.append("?timestamp="); 
     urlBuilder.append(new Date().getTime()); 
     super.loadUrl(urlBuilder.toString()); 

    } 
} 

它每次在網址的末尾追加時間戳值,並加載內容爲新的內容。

這些是避免在Phonegap/Cordova網絡應用中緩存的兩種方法。

希望這可能會有所幫助。