アプリで WebView を使用していますが、多くのユーザーからいくつかの問題が報告されています。それらのほとんどは、以前ではなく 4.1.1 で発生しているようです。
構成:
- HW アクセラレーション アクティビティ内の Webview。
- JS が有効、プラグインが有効、ファイル アクセスが有効、DOM ストレージが有効。
- カスタム WebChromeClient および WebViewClient。
- Webview には透明な背景 (0X00000000) がありますが、それを削除しても改善されないようです。
問題:
- 一部の URL を表示するとランダムにブラック アウトします。ブラック アウトの意味は、アクティビティが停止するだけで、JAVA 例外はありません。
- 通常、ログは glDrawArrays() で SIGSEGV を報告しますが、別の場所にある可能性もあります (ユーザーからの十分な情報ではありません)。
回避策はありますか?
WebView で HW アクセラレーションを無効にするだけです。ええ、もうブラック アウトはありません。そうです...しかし、(ディスプレイのパフォーマンスがかなり低下するため、この回避策がまさにそうであると考えても):
新しい問題:
- ハードウェア アクセラレーションがないと、HTML5 ビデオ (YouTube) が機能しません。サウンドは再生されますが、ビデオは再生されません。
- 解決策は、再生開始イベントをキャッチして、ビデオを videoView で再生することです。これは、フルスクリーン再生の場合と同じ方法です (onShowCustomView を使用して、android webview でフルスクリーンで HTML5 ビデオを再生するを参照してください)。それにもかかわらず、私は現在、そのようなイベントをキャッチできません。私は HTML ページの所有者ではないことに注意してください。HTML コードを変更して、何らかの Javascript コードを追加することはできません。
質問:
- 多くのデバイスで HW アクセラレーション + WebView を使用して、同じ種類のクラッシュが発生した人はいますか? もしそうなら、どうやってそれを解決しますか?
- 回避策について、この問題を解決する方法を知っている人はいますか? IOS のようにするとよいでしょう。
読んでくれてありがとう!