【Android】I/Choreographer: Skipped 31 frames! The application may be doing too much work on its main thread.が表示された場合の対処法
Androidアプリを開発していて、下記のようなログが出たときの対処法はこちらのサイトで紹介されています。
I/Choreographer: Skipped 31 frames! The application may be doing too much work on its main thread.
WebViewを実装しようとした時、上記のログが表示され、他の処理が思ったように処理されなかった!ということはありませんか?
WebViewを表示する時、パソコンで動作しているCromeでデバッグすることが出来ますが、その機能を有効にする下記のコードが入っていたりしませんか?
WebView.setWebContentsDebuggingEnabled(true);
どうも、この記述があると
I/Choreographer: Skipped 31 frames! The application may be doing too much work on its main thread.
のエラーが表示されるようです。
で、参考サイトにかかれているよう、別スレッドで非同期で処理させると動くのかというと・・・これが動かないんですね。WebViewのデバッグはUIのスレッドで動作させる必要があるので、非同期で処理させるやり方は出来ないのです。
で、どうすればいいのか・・・?
どうすればいいんでしょうかね?ただ、Androidアプリを正式にリリースすることになった場合、WebView.setWebContentsDebuggingEnabled(true);
の記述は有効になったままでは危険です。
リリースする時に無効にするのであれば、開発中はめんどくさいけど必要に応じて無効にしてビルドするなりするしかないですかね?
蛇足ですが、AndroidアプリでWebViewを表示させる場合で、そこで表示しているWebのデバッグを行いたい場合、ソースコード上に
WebView.setWebContentsDebuggingEnabled(true);
を記載し、使っているパソコンに入れてあるGoogle Crome のアドレスに「chrome://inspect/」と入力すると、Cromeの開発者ウインドウが表示され、要素の確認やJavaScriptのステップ実行など行うことができます。