RegExp.prototype.test
обновляет свойство регулярных выражений lastIndex
, чтобы каждый тест начинался с остановки последнего. Я бы предложил использовать String.prototype.match
, поскольку он не обновляет свойство lastIndex
:
!!'Foo Bar'.match(re); // -> true
!!'Foo Bar'.match(re); // -> true
Примечание: !!
преобразует его в логическое, а затем инвертирует логическое значение, чтобы он отражал результат .
В качестве альтернативы вы можете просто сбросить свойство lastIndex
:
result.push(re.test('Foo Bar'));
re.lastIndex = 0;
result.push(re.test('Foo Bar'));
Если вы используете любой из классов запроса по умолчанию, реализованных в волейболе (например, StringRequest, JsonRequest и т. д.), затем вызовите setShouldCache (false) прямо перед добавлением объекта запроса в залп RequestQueue:
request.setShouldCache(false);
myQueue.add(request);
Если у вас есть собственная реализация класса Request, вы можете вызвать setShouldCache (false) в конструкторе вашего класса.
Это решение отключает кеширование для каждого запроса индивидуально. Если вы хотите отключить кеширование в глобальном масштабе из библиотеки volley, вы можете навсегда установить для переменной mShouldCache значение false в классе Request.
Вы можете создать RequestQueue из конструктора и передать объект NoCache
в качестве первого параметра. Второй параметр - сетевой транспорт, основанный на вашем выборе AndroidHttpClient
или HttpURLConnection
.
RequestQueue queue = new RequestQueue(new NoCache(), new BasicNetwork(new HurlStack()));
Подробнее см. В этой документации .
Согласно документации, BasicNetwork
является реализацией сети по умолчанию для Volley.
request.setShouldCache(false);
, похоже, недостаточно для запросов GET. однако очистка кеша перед добавлением в очередь, похоже, помогает
myRequestQueue.getCache().clear();
. Я помещаю это в свой метод getRequestQueue()
в одиночном сингле Volley. перед возвратом очереди.