Я выполняю StrictMode.enableDefaults()
, чтобы очистить свой код, и у меня есть одна строка кода, которая устанавливает ZoneId
, который дает 10 StrictMode
нарушений около 195 мс каждая для одной строки кода.Оператор Log.d
чуть выше строки отображается только один раз в Logcat .Я получаю те же ошибки, если использую ZoneId.of(tz.getID())
.
Что здесь происходит?Я проверил источник ZoneId
, и причина не была очевидна для меня.Это от ZoneId
разбора ввода?Журналы только идут от 16: 46: 09.079 до 16: 46: 09.080 , но в остальном 10 трассировок стека выглядят одинаково.
Действительно ли я теряю 195ms x 10 или это какая-то ошибка?Спасибо
Подпрограмма с ошибкой:
if (lastUpdateZoneOffset.equals(utcOffset)) {
// last update offset is zero, so add back time from observation station time zone
Log.d(TAG, "tz.getID()");
//ZoneId observationStationZoneId = ZoneId.of(tz.getID());
ZoneId observationStationZoneId = ZoneId.of("America/Denver"); **<---Error Here**
ZonedDateTime zdt = offsetDateTime.atZoneSameInstant(observationStationZoneId);
// format to 14 Apr 4:16 PM Note: the "a" pattern only allows upper case for AM/PM
lastUpdate = zdt.format(DateTimeFormatter.ofPattern("dd MMM h:mm a"));
lastUpdate += " " + tz.getDisplayName(true, SHORT);
} else {
lastUpdate = offsetDateTime.format(DateTimeFormatter.ofPattern("dd MMM h:mm a"));
lastUpdate += " " + tz.getDisplayName(true, SHORT);
}
Типичная трассировка стека:
01-01 16:46:09.079 24614-24614 D/StrictMode: StrictMode policy violation; ~duration=196 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=31 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1137)
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:182)
at libcore.io.IoBridge.open(IoBridge.java:442)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:117)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:149)
at java.util.zip.ZipFile.<init>(ZipFile.java:158)
at java.util.zip.ZipFile.<init>(ZipFile.java:119)
at dalvik.system.DexPathList$Element.maybeInit(DexPathList.java:431)
at dalvik.system.DexPathList$Element.findResource(DexPathList.java:445)
at dalvik.system.DexPathList.findResources(DexPathList.java:361)
at dalvik.system.BaseDexClassLoader.findResources(BaseDexClassLoader.java:72)
at java.lang.ClassLoader.getResources(ClassLoader.java:425)
at java.util.ServiceLoader.internalLoad(ServiceLoader.java:129)
at java.util.ServiceLoader.reload(ServiceLoader.java:93)
at java.util.ServiceLoader.<init>(ServiceLoader.java:86)
at java.util.ServiceLoader.load(ServiceLoader.java:122)
at org.threeten.bp.zone.ZoneRulesInitializer$ServiceLoaderZoneRulesInitializer.initializeProviders(ZoneRulesInitializer.java:122)
at org.threeten.bp.zone.ZoneRulesInitializer.initialize(ZoneRulesInitializer.java:89)
at org.threeten.bp.zone.ZoneRulesProvider.<clinit>(ZoneRulesProvider.java:82)
at org.threeten.bp.zone.ZoneRulesProvider.getRules(ZoneRulesProvider.java:121)
at org.threeten.bp.ZoneRegion.ofId(ZoneRegion.java:143)
at org.threeten.bp.ZoneId.of(ZoneId.java:358)
at com.drme.weatherNoaa.CurrentConditionsFragment.getDisplayLastUpdate(CurrentConditionsFragment.java:674)
at com.drme.weatherNoaa.CurrentConditionsFragment.updateCurrentConditionsUi(CurrentConditionsFragment.java:543)
at com.drme.weatherNoaa.DataManager$1.handleMessage(DataManager.java:201)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)