

現在、Androidアプリの開発をしております。  
WebViewを使ってスマホ版のwebページを表示させているのですが、  
読み込んだWebページをスクロールする際にカクついてしまいます。

ネットで「android:hardwareAccelerated="true"」にすると改善されるという記事を見つけ、  
試してみたのですが、まだ少しスクロールでカクついてしまいます。

他に何か対策方法はあるのでしょうか？

よろしくお願いいたします。


CC BY-SA 3.0
2017-01-25T05:32:37.677
32135
2017-01-25T06:16:05.300
18986
question
android webview
AndroidアプリのWebViewで読み込んだWebページのスクロール速度を上げたいです。


ちゃんと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で解析可能です。

どちらのツールも公式サイトに解析方法が記載されています。  
<https://developer.android.com/studio/profile/traceview.html>  
<https://developer.android.com/studio/profile/systrace.html>

ちなみに開発をEmulatorで行われている場合、  
製品にはGMSのChromeが搭載されておりWebViewもChrome内部のものを使用しますが  
EmulatorではAOSPのWebViewが使われるはずなので挙動が多少変わってくると思います。


CC BY-SA 3.0
2017-01-25T06:09:54.517
32138
2017-01-25T06:16:05.300
2017-01-25T06:16:05.300
19716
19716
32135
answer