web-dev-qa-db-ja.com

SysUtilsのApplicationContextがApplicationStatus(WebView)でnull

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() {
...

どうしたの?

22
koras

ここで何が起こっているのですか:

ApplicationStatusはまだ初期化されていないため、コンテキストを取得できません。これは完全に自然な状況なので、エラーは発生しません。これをエラーとして記録することは、コーダーからの誇張でした。

ただし:

これは実際の問題を引き起こしません、関数はコンテキストオブジェクトを取得して、デバイスのパフォーマンス機能を評価するためのさらに別のチェックを実行しようとするためです。 「isLowRamDevice()」の呼び出しに失敗することがあるので、残りのチェックの実行を続行します。したがって、最悪のシナリオでは、この時点でローエンドの電話を検出できず、その後のチェックが行われます。

また、KitKatの下で何かを検出した場合、関数は早期に復帰するため、"I see this error in a Lollipop device (Nexus 10) but not in a JellyBean device"は完全に正常です。 (// Any pre-KitKat device cannot be considered 'low-end'

13
Gergely Bacso