Подтвердить что ты не робот

SysUtils: ApplicationContext имеет значение null в ApplicationStatus (WebView)

Я вижу что-то странное при запуске приложения на основе WebView. Это совсем не влияет на приложение, но мне любопытно, почему появляется ошибка. Ничего не происходит, все кажется нормально, но ошибка...

Вот logcat

Loading com.google.android.webview version 42.0.2311.137 (code 2311137)
I/LibraryLoader﹕ Time to load native libraries: 2 ms (timestamps 3347-3349)
I/LibraryLoader﹕ Expected native library version number "",actual native library version number ""
V/WebViewChromiumFactoryProvider﹕ Binding Chromium to main looper Looper (main, tid 1) {2d3b4b2c}
I/LibraryLoader﹕ Expected native library version number "",actual native library version number ""
I/chromium﹕ [INFO:library_loader_hooks.cc(112)] Chromium logging enabled: level = 0, default verbosity = 0
I/BrowserStartupController﹕ Initializing chromium process, singleProcess=true
W/art﹕ Attempt to remove local handle scope entry from IRT, ignoring
E/SysUtils﹕ ApplicationContext is null in ApplicationStatus
W/chromium﹕ [WARNING:resource_bundle.cc(286)] locale_file_path.empty()
I/chromium﹕ [INFO:aw_browser_main_parts.cc(63)] Load from apk succesful, fd=34 off=6850672 len=3697
I/chromium﹕ [INFO:aw_browser_main_parts.cc(76)] Loading webviewchromium.pak from, fd:35 off:7953036 len:1161174
I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:379>: QUALCOMM Build: 01/15/15, ab0075f, Id3510ff6dc
W/AudioManagerAndroid﹕ Requires BLUETOOTH permission
W/chromium﹕ [WARNING:data_reduction_proxy_config.cc(150)] SPDY proxy OFF at startup
W/art﹕ Attempt to remove local handle scope entry from IRT, ignoring
W/AwContents﹕ onDetachedFromWindow called when already detached. Ignoring
I/GAv4﹕ Google Analytics 4.5.0/7327 is starting up. To enable debug logging on a device run:
    adb shell setprop log.tag.GAv4 DEBUG
    adb logcat -s GAv4

Я предполагаю, что ошибка исходит отсюда: https://chromium.googlesource.com/chromium/src/base/+/master/android/java/src/org/chromium/base/SysUtils.java

Несколько строк инициализации WebView

...
// load url in webView
webView.loadUrl(webViewUrl);
webView.setWebViewClient(new MyAppWebViewClient());

// implement WebChromeClient inner class
// we will define openFileChooser for select file from camera
webView.setWebChromeClient(new WebChromeClient() {
...

Что происходит?

4b9b3361

Ответ 1

Что здесь происходит:

ApplicationStatus еще не инициализирован, поэтому контекст не может быть получен из него. Это совершенно естественная ситуация, поэтому ошибки не следует поднимать. Регистрация этой ошибки в качестве ошибки была преувеличением кодера.

Однако:

Это не вызывает никакой реальной проблемы, потому что функция пытается получить объект контекста только для выполнения еще одной проверки для оценки производительности устройства. Так как иногда не удается вызвать "isLowRamDevice()", он просто продолжит выполнение остальных проверок. Таким образом, в худшем случае не удается обнаружить недорогой телефон в этот момент, и последующие проверки будут сделаны.

Также вполне нормально, что "I see this error in a Lollipop device (Nexus 10) but not in a JellyBean device", потому что функция имеет раннее возвращение, если обнаруживает что-либо ниже KitKat. (// Any pre-KitKat device cannot be considered 'low-end')