SysUtils:ApplicationContext 在 ApplicationStatus (WebView) 中为 null

SysUtils﹕ ApplicationContext is null in 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() {
...

怎么回事?

这里发生的事情是:

ApplicationStatus 尚未初始化,因此无法从中获取上下文。这是完全自然的情况,因此不应出现错误。将此记录为错误是编码人员的夸张。

但是:

这不会导致任何实际问题,因为该函数尝试获取上下文对象只是为了执行另一项检查以评估设备的性能。由于它有时无法调用 "isLowRamDevice()",它只会继续执行其余的检查。所以最坏的情况是此时无法检测到低端phone,随后将进行检查。

也是完全正常的 "I see this error in a Lollipop device (Nexus 10) but not in a JellyBean device",因为如果该函数检测到任何低于 KitKat 的内容,它就会提前 return。 (// Any pre-KitKat device cannot be considered 'low-end')