StrictMode показывает 10 ошибок для одной строки кода - PullRequest
0 голосов
/ 02 января 2019

Я выполняю 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)
...