使用Portrait的Android webview问题

时间:2017-10-23 18:43:08

标签: android webview android-webview

我在AndroidManifest.xml中有这段代码:

<activity android:name=".MainActivity"
        android:configChanges="orientation"
        android:screenOrientation="portrait">

我知道我的屏幕现已锁定在portrait模式下。但有没有使用portrait模式锁?所以我的用户可以在其他模式下查看内容,而不会将应用程序休息到开始屏幕(index.html)

2 个答案:

答案 0 :(得分:0)

当savedInstanceState!= null

尝试:

     if (savedInstanceState == null)
      {
      web.loadUrl(webURL);
      }

您还需要onSaveInstanceState和onRestoreInstanceState覆盖。

@Override
protected void onSaveInstanceState(Bundle outState )
{
super.onSaveInstanceState(outState);
  web.saveState(outState);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState)
{
 super.onRestoreInstanceState(savedInstanceState);
 web.restoreState(savedInstanceState);
 }

答案 1 :(得分:0)

我最近在StackOverflow上看到了很多关于WebView的问题,所以我决定进行调查以找到一个有效的精确答案。

我使用包含WebView的单个MainActivity创建了一个项目。

以下是在旋转屏幕时必须满足以防止WebView重新加载的条件:

  1. 使主机活动处理配置更改本身。在我的测试中,我发现你需要设置至少这3个标志: orientation|keyboardHidden|screenSize

  2. 设置WebChromeClientWebViewClient,或者将页面加载委托给用户的默认浏览器。

  3. 我在以下配置上进行了测试:

    • 使用Android Oreo的Nexus 5X(API 26)
    • 使用Android Marshmallow的虚拟Nexus 5X(API 23)
    • 使用Android Kit Kat的虚拟Nexus 4(API 19)。

    请注意,API 19之前的WebView行为可能完全不同。

    如果您发现任何条件,请随时在我的帖子中添加任何必要条件。