Очистить пользовательские данные или очистить кэш на PhoneGap Android - PullRequest
7 голосов
/ 16 марта 2012

Как очистить пользовательские данные или очистить кэш с помощью PhoneGap и Android? Код ниже не работает. Где я должен сделать изменения; На стороне HTML или на стороне Java? Также я получаю доступ к AJAX-запросу, и со второй попытки метода PUT данные не обновляются, поэтому я подозреваю, что данные пользователя хранятся в Android. Я добавил cache: false в свой запрос AJAX, чтобы гарантировать, что он не хранит кэш. Но это все равно не работает. Любые идеи о том, как это исправить?

У меня этот код основан на другом вопросе.

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();
}
}

Ответы [ 2 ]

3 голосов
/ 31 августа 2012

Добавьте приведенный ниже код в свой файл метода oncreate () после загрузки index.html:

if (super.appView != null) {
     super.appView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
}
1 голос
/ 05 апреля 2017

Я искал простой способ очистки кеша в моем приложении Cordova и нашел этот плагин , который очищает кеш webView в Android с помощью следующего кода:

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

А в iOS, работает в фоновом режиме и делает это:

[[NSURLCache sharedURLCache] removeAllCachedResponses];

Чтобы использовать плагин, просто позвоните window.CacheClear(success, error);

К счастью для меня, это решило мою проблему.Большое спасибо автору этого cordova-plugin-cache-clear !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...