Lightning Browserと呼ばれるオープンソースのブラウザを開発していますが、Android(4.2.2)の最新のアップデートで問題が発生しました。WebViewが触れられるまでレンダリングに失敗する4.2.2
WebViewsは、ビューに触れるまで完全にレンダリングできません。最新のAndroidバージョンでのみ発生します。 4.2.1では、WebViewが完全に正常にレンダリングされました。開発用にNexus 7を使用し、4.2.2アップデートを受け取った直後にブラウザがレンダリングを停止しました。他のユーザーもこれを経験し、4.2.2でのみ発生することが複数回確認されました。 APIレベル16と17をターゲットにしていますが、この問題がなくてもAPIレベル9をターゲットとするWebKitブラウザがあります。
私はここでスタックオーバーフロー(Android WebView renders blank/white, view doesn't update on css changes or HTML changes, animations are choppy)で見つかった問題の解決方法を使用してこれを解決しようとしました。ただし、WebViewのRenderPriorityを高く設定するだけでは解決できません... WebViewのOnDraw()メソッド内にinvalidate()コマンドを配置するだけです。これにより、WebViewが継続的に再描画されます。これは動作します(並べ替え)、アニメーションはスムーズで、ページは非常に高速に読み込まれますが、WebViewのパフォーマンスは低下します。
私はこの質問も見たことがありますが(私のものに非常に似ています)、それには良い答えはありません。 Android WebView Fails to Completely Render Content Until User Interaction
パフォーマンス低下とは、入力を意味します。テキストの入力が遅れ、WebView自体は以前と同じように何が起こっているのかを処理できません。 invalidate()メソッド呼び出しでブラウザをベンチマークすると、ベンチマークのパフォーマンスが約8%低下します。私はベンチマークがすべてではないことを知っていますが、連続的な描画がシステムに負担をかけ、システムに他のタスクを無視させていることがわかります。
結論... Android 4.2.2のWebViewは、タッチされるまでレンダリングされません。私がこれを修正するために知っている唯一の方法は、WebViewのonDraw()メソッドでinvalidate()を呼び出すことです。これはパフォーマンスが悪いので、これを修正する別の方法を探しています。
マジックコード(私は現在使用している)...
class MyWebView extends WebView
{
@Override
onDraw(Canvas canvas)
{
invalidate();
super.OnDraw(canvas);
}
}
は
invalidate();
を削除し、触れるまではレンダリングされません。
WebViewのレンダリングの仕方に関する提案は誰にもありますか?ちなみに、これはStackについて私がここで尋ねた最初の質問です。私が明確でないか、私が間違ったことをした場合、私を許してください。
EDIT: 私はこの質問を見つけました。この問題はほぼ同じような問題であり、解決されました。問題は、答えが何を意味するのか分かりません。誰かが私を啓発できるなら、それは助けになるかもしれません。
私は、だから私は最終的に問題はないレンダリングするのWebViewを引き起こしたlogcat
E/chromium(1243): external/chromium/net/disk_cache/backend_impl.cc:2022: [0705/172030:ERROR:backend_impl.cc(2022)] Corrupt Index file
この問題は私たちの問題に関連していません。ページは空白ですが、読み込みにエキゾチックな問題があるため、レンダリングパイプラインとは関係ありません。 – rupps
BTW ...私の場合も、実行時にJQueryを使用して選択した場合、キーボード入力のパフォーマンスが非常に悪くなり(ページの複雑さが増すにつれて低下します)、HTML入力の選択時にネイティブ入力オーバーレイがトリガーされます。あまりエレガントではありませんが、ネイティブ入力は完璧に機能し、テキストの選択/切り取り/貼り付けは面倒ではありません... – rupps
パフォーマンスを低下させない代替方法http://stackoverflow.com/a/19253633/236743 :) – Dori