Webview でページが適切に実行されるための前提条件は、効率的で安定した Webview コンテナーを備えていることであることはわかっています。コンテナーの効率と安定性は、コンテナー プロバイダーによって保証されるだけでなく、コンテナー ユーザーにも準拠する必要があります。そうしないと、ページがクラッシュする可能性があります。これらのガイドラインは何ですか?どのような上位レベルのコードがコンテナを異常終了させるのでしょうか?これがこの記事で説明する必要があることです。
以下の図は H5 クラッシュの大まかなフローチャートです:
フロントエンドはページクラッシュのステータスとスタックをキャプチャできないため、H5 ページで発生したエラーは に渡されます。 Java および下位レベルのネイティブは、コンテナーが異常終了するまで待機し、終了時にコンテナーがスタックをログに書き込み、次回コンテナーが開かれたときにスタック情報が報告されます (定期的に報告される場合もあります)。 )。
テストコード倉庫アドレス:
git clone https://github.com/barretlee/h5crash.git;cd demo;
注: コードは Webview コンテナーでテストする必要があり、PC ブラウザーでは例外は発生しません。
H5 クラッシュの原因は明らかではありませんが、経験と調査から判断すると、次の 3 つのタイプに大別できます:
既存の干渉: この種のテストには、次のような多くの干渉があります。デバイスタイプ、システムタイプ(iOS/Android)、デバイスメモリ動作状態など
内存消耗:0 M
実際、複数のレイヤーを作成するとメモリが大量に消費されます。ページクラッシュは過剰なメモリ消費が原因である可能性があります