WebView を別のアクティビティに渡す必要がありましたが、html コンテンツを 2 回読み込むことができないため、新しいアクティビティで新しい WebView を作成できませんでした。そのため、静的な黒板とMutableContextWrapperを使用して問題を解決できました。
アプローチは次のとおりです。(i) 元のアクティビティはMutableContextWrapperを使用して WebView をインスタンス化し、2 番目のアクティビティを開始する前に、(ii) 元のアクティビティから WebView を切り離し、(iii) 静的な黒板に格納します。 2 番目のアクティビティが開始され、(iv) 黒板の WebView のインスタンスが取得され、(v) MutableContextWrapperを使用してそのコンテキストが更新され、(vi) 新しいアクティビティにアタッチされます。2 番目のアクティビティが閉じられると、逆の方法で元のアクティビティに WebView が戻されます。
このアプローチはほとんどの Android バージョンで非常にうまく機能しますが、Lollipop バージョン以降、WebView は 2 番目のアクティビティにアタッチされている間はコンテンツを更新しません。ただし、2 番目のアクティビティが閉じられ、WebView が元のアクティビティに戻ると、正常に動作します。
私の研究では、Android L からの WebViews の新しい動作について発見しました。これは、描画する必要がある HTML ドキュメントの部分をインテリジェントに選択することで、メモリ フットプリントを削減し、パフォーマンスを向上させます。
そのため、この機能が WebView の更新に干渉するのではないかと疑っていましたが、enableSlowWholeDocumentDraw()メソッドを呼び出しても、WebView は引き続き正しく動作しません。
誰かがこの動作の原因を説明できるでしょうか?