我的应用程序-使用WebView的活动在屏幕旋转并且回到第一个活动时会自动刷新。
例如:当我从A->B或B-C切换时,如果屏幕旋转,它将返回到A并刷新。
我的问题是:我们如何在屏幕旋转时保持活动状态?
我的应用程序-使用WebView的活动在屏幕旋转并且回到第一个活动时会自动刷新。
例如:当我从A->B或B-C切换时,如果屏幕旋转,它将返回到A并刷新。
我的问题是:我们如何在屏幕旋转时保持活动状态?
解决这个问题有多种方法。
简单的方法是在你的清单文件中的相关Activity
上添加android:configChanges="orientation|screenSize"
标志。通过设置此标志,您告诉Android不要销毁Activity
并且您将自己处理所有方向更改(如果有)。
更现代的方法是将WebView
放在一个Fragment
中,并使用setRetainInstance(true)
标志使其保留实例。主机Activity
仍将在方向更改时被销毁,但包含WebView
的Fragment
将被简单地分离和重新连接,而无需重新创建自身。您可以在API演示中找到这个功能的示例。请注意,支持库提供了一个面向Honeycomb以下版本的片段兼容实现,因此不要被“常规”Fragment
类的API级别所迷惑。
强调 @kirgy 的评论,如果你的 API > 3.2 ,你需要在你的清单文件中添加 orientation|screenSize
,否则在某些情况下它不起作用。
android:configChanges="orientation"
,以防止屏幕方向更改时重新启动。 <activity android:name=".MyActivity"
android:configChanges="orientation|screenSize"
android:label="@string/app_name">
参考这里了解一些相关信息。
WebView
- 这就是为什么你总是会在onCreateView()
或onActivityCreated()
中在片段级别重新填充视图。我在上面的答案中没有具体说明,但是使用setRetainInstance(true)
,您可以使“旧”的WebView
将其状态保存到bundle并在之后恢复它。这意味着WebView
将不得不重建其内容(即重新加载url),因此在视觉上不如手动处理Activity
的配置更改快/流畅。 - MH.