1

我需要将一个 WebView 传递给另一个 Activity,并且我无法在新的 Activity 中创建新的 WebView,因为无法加载两次 html 内容。所以我设法使用静态黑板和MutableContextWrapper解决了这个问题。

方法是:(i) 原始 Activity 使用MutableContextWrapper实例化 WebView ,在启动第二个 Activity 之前,(ii) 我将 WebView 从原始 Activity 中分离出来,(iii) 将其存储在静态黑板上,当第二个 Activity 启动,(iv) 它获取黑板上的 WebView 实例,(v) 使用MutableContextWrapper更新其 Context ,(vi) 并将其附加到新 Activity。当第二个Activity关闭时,按照相反的方式将WebView放回原来的Activity中。

这种方法在大多数 Android 版本中效果很好,但是自从 Lollipop 版本以来,WebView 在附加到第二个 Activity 时不会刷新其内容。但是,当第二个 Activity 关闭并且 WebView 恢复到原始 Activity 时,它可以正常工作。

在我的研究中,我发现了来自 Android L 的 WebViews 的新行为,它通过智能地选择需要绘制的 HTML 文档部分来减少内存占用并提高性能。

所以我怀疑这个功能可能会干扰WebView的刷新,但是即使调用enableSlowWholeDocumentDraw()方法,WebView仍然无法正常工作。

有人会知道解释这种行为的原因吗?

4

0 回答 0