質問: 現在、Androidアプリの開発をしております。 WebViewを使ってスマホ版のwebページを表示させているのですが、 読み込んだWebページをスクロールする際にカクついてしまいます。 ネットで「android:hardwareAccelerated="true"」にすると改善されるという記事を見つけ、 試してみたのですが、まだ少しスクロールでカクついてしまいます。 他に何か対策方法はあるのでしょうか? よろしくお願いいたします。
回答: ちゃんとHardwareRendererになっているのであればWebViewの描画そのものが原因でスクロールでカクツクということは(理論上)ありません。 何故ならばWebViewの仕組みは ・GPU(HWRender)でタイルをスクロール、拡大、縮小等 ・Skiaにてタイルの中身を描画 となっているので、ページの中身が表示されないことはあってもタイルのスクロールは中身の表示の有無には無関係だからです。 ですので、スクロールがカクツク原因は 1. UIスレッドで何かカクツク様な処理が行われている 2. その他CPU専有処理が起こっている 3. (最近はほぼないが)SuraceFlinger以下の処理が追いついていない 4. (状況による)GPUの処理が追いついていない etc...等です。 3.4.はまぁ無視して良いです。 3.はsystraceで解析可能ですが、これが原因ならばアプリ側からは解決不可能です。 4.はAdreno Profiler等で解析可能ですが、激しいGPU処理を行なっていないならこれも原因ではないでしょう。 1.はtraceviewやsystraceで解析可能です。 2.はtopコマンドやsystraceで解析可能です。 どちらのツールも公式サイトに解析方法が記載されています。 ちなみに開発をEmulatorで行われている場合、 製品にはGMSのChromeが搭載されておりWebViewもChrome内部のものを使用しますが EmulatorではAOSPのWebViewが使われるはずなので挙動が多少変わってくると思います。