2012-03-16 9 views
7

PhoneGapとAndroidを使用してユーザーデータを消去したり、キャッシュをクリアするにはどうすればよいですか?以下のコードは動作しません。変更はどこで行うべきですか? HTML側かJava側か?また、AJAXリクエストにアクセスしています.PUTメソッドの2回目の試行で、データが更新されないため、主な疑いがAndroidのユーザーデータです。 AJAXリクエストにcache: falseを追加して、キャッシュを保存しないようにしました。しかし、それはまだ動作しません。どのようにこれを修正するための任意のアイデア?PhoneGapとAndroidでキャッシュを消去するandroid

私はこのコードを別の質問に基づいています。

public static void deleteCache(Context context) { 
    try { 
     File dir = context.getCacheDir(); 
     if (dir != null && dir.isDirectory()) { 
      deleteDir(dir); 
     } 
    } catch (Exception e) {} 
} 

public static boolean deleteDir(File dir) { 
    if (dir != null && dir.isDirectory()) { 
     String[] children = dir.list(); 
     for (int i = 0; i < children.length; i++) { 
      boolean success = deleteDir(new File(dir, children[i])); 
      if (!success) { 
       return false; 
      } 
     } 
    } 
    return dir.delete(); 
} 

したがって、私のPOSActivity.javaは基本的に次のようになります。

public class PocActivity extends DroidGap { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    super.setIntegerProperty("splashscreen", R.drawable.is); 
    super.setIntegerProperty("loadUrlTimeoutValue", 60000); 
    deleteCache(this); 
    super.loadUrl("file:///android_asset/www/index.html"); 
} 

public static void deleteCache(Context context) { 
    try { 
     File dir = context.getCacheDir(); 
     if (dir != null && dir.isDirectory()) { 
      deleteDir(dir); 
     } 
    } catch (Exception e) {} 
} 

public static boolean deleteDir(File dir) { 
    if (dir != null && dir.isDirectory()) { 
     String[] children = dir.list(); 
     for (int i = 0; i < children.length; i++) { 
      boolean success = deleteDir(new File(dir, children[i])); 
      if (!success) { 
       return false; 
      } 
     } 
    } 
    return dir.delete(); 
} 
} 
+0

キャッシュ:falseのため、同じ応答を2度受け取らないようにするため、AJAX putリクエスト自体のデバッグを開始します - jQueryは自動的にそのリクエストにタイムスタンプを追加してキャッシュされないようにします –

+0

...また、上記のコードをAndroidデバイスの内部キャッシュをクリアするために使用しました。そのコードはうまく動作すると思います –

答えて

3

のindex.htmlをロードした後、活動ファイルのあなたのOnCreate()メソッド内のコードの下に追加します。

if (super.appView != null) { 
    super.appView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
} 
1

を、私は私のコルドバアプリケーションでのキャッシュをクリアする簡単な方法を探し、見つかりました次のコードを使用してAndroidの中のWebViewキャッシュをクリアthis plugin

// clear the cache 
self.webView.clearCache(true); 

とiOSでの、バックグラウンドで実行され、次の操作を行います。

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 

プラグインを使用するには、単に私にとって幸運なことにwindow.CacheClear(success, error);

を呼び出し、それは私が持っていた問題を解決しました。 この作者のために大変ありがとうございますcordova-plugin-cache-clear