Загружены названия часовых поясов для en

у меня есть что-то вроде этого

I/global  ( 3622): Loaded time zone names for en in 355ms.
I/global  ( 3622): Loaded time zone names for en in 307ms.
I/global  ( 3622): Loaded time zone names for en in 309ms.
I/global  ( 3622): Loaded time zone names for en in 310ms.
I/global  ( 3622): Loaded time zone names for en in 324ms.

и я понятия не имею, откуда этот журнал.

Я проводил некоторые исследования по этой теме, и я думаю, что это происходит из

new Date();

но я не уверен.

Мне нужен совет, что мне делать, чтобы ускорить процесс. У меня есть приложение, которое в данный момент очень медленное, и задержка происходит ровно на этих пяти строках выше, требуется около полутора секунд, чтобы просто прочитать время :(.

если вы советуете поставить глобальную переменную и читать время только единицы, извините, я не могу этого сделать :(. Мне нужно время в моих функциях в этот момент (невозможно прочитать время только единицы :().


person Lukap    schedule 16.01.2012    source источник


Ответы (3)


я нашел свою проблему

Проблема в том, что сейчас нет способа обойти эту проблему из-за дизайна API SimpleDateFormat. Только более быстрые телефоны могут исправить это, просто затрачивая меньше времени на сбор этих строк.

Так что надеюсь не будет проблем с часовым поясом в следующих версиях андроид скд, да и в более новых телефонах.

а пока осторожно с этой строкой

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS Z");

Потому что задержка исходит оттуда

если вы используете форматирование без часового пояса, он работает отлично (без задержки)

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
person Lukap    schedule 17.01.2012

Я также заметил это при разборе потока контента, содержащего даты. Я понял, что в моем случае (и, вероятно, в случае многих из нас) строка формата даты была одинаковой для каждого из созданных объектов SimpleDateFormat.

Итак, мне удалось решить эту проблему, создав всего один объект SimpleDateFormat и повторно используя его всякий раз, когда мне нужно было анализировать даты. Существует слишком много способов реализовать это в зависимости от того, как структурирован ваш код, поэтому я не буду вдаваться в подробности.

Задержка загрузки часовых поясов по-прежнему происходит один раз, конечно, при создании объекта.

person Martín Valdés de León    schedule 13.12.2012

Убедитесь, что вы создаете экземпляр только одного объекта SimpleDateFormat, а затем повторно используете его везде, где вам нужно. Таким образом, имена часовых поясов будут загружаться только один раз.

person Tom Susel    schedule 28.08.2013