【问题标题】:Avoid webview re-render web page on orientation change [Android]避免 webview 在方向更改时重新渲染网页 [Android]
【发布时间】:2013-11-14 13:34:02
【问题描述】:

我试图避免 webview 在方向更改时重新渲染网页。

我的活动的方向固定为纵向,但单击一个按钮,我将活动的方向更改为横向和纵向。

当我更改活动的方向时,我的网络视图需要时间来呈现/刷新页面。我的 web 视图正在呈现的网页是本地的,仍然需要时间(大约 2-4 秒)来显示页面的包含,并且我在转换时间看到空白屏幕。

我尝试通过调用以下函数来保存 Web 视图的状态:

 // Before switching calling
 Bundle webViewState;
 webViewState = new Bundle();
 Webview.saveState(webViewState);

 // When switching done then calling. 
 Webview.restoreState(webViewState);

但如 android sdk 文档中所述,我们需要在活动周期的 onSaveInstanceState 和 onRestoreInstanceState 中调用这些函数,所以在这种情况下我会崩溃,因为我没有从活动周期中调用这些函数。

有没有人有这种情况的解决方法/修复方法。

更新: 在我的应用程序中,我使用设置方向,所以我无法使用onSaveInstanceState 和onRestoreInstanceState,因为当我们有固定方向时这些函数不会被调用。

【问题讨论】:

    标签: android webview orientation


    【解决方案1】:

    页面被重新渲染,因为您的活动在方向更改时被破坏并重新创建。更新清单中的活动:

    <activity android:name="..."
        android:configChanges="orientation|screenSize"  .../>
    

    这将阻止系统在方向更改时重新创建您的 Activity。

    【讨论】:

      【解决方案2】:

      我认为您应该查看文档的这一部分:Handling the Configuration Change Yourself

      【讨论】:

      • 事情是我的活动有固定的方向肖像,因此当我打电话给setOrientation 然后我的onConfigurationChange 没有被调用。所以我不能使用这种方法。无论如何我可以将方向保持为 gfixed 并获得 onConfigurationChange 事件..我认为没有任何办法。
      • 我认为您需要共享用于重定向视图的代码。每个人都会假设您正在谈论破坏和重新创建活动的自动系统重定向,并想知道为什么您不能从生命周期方法中调用这些方法。
      • 我已经添加了关于这个的更新,请查看我更新的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      • 2021-03-12
      • 1970-01-01
      • 2018-12-16
      相关资源
      最近更新 更多