【发布时间】:2011-03-01 03:33:34
【问题描述】:
我在构建 android webview 时遇到问题。问题是当应用程序正在运行并且手机改变方向时,我的意思是从水平到垂直,反之亦然,应用程序会重新启动。谢谢
【问题讨论】:
标签: android
我在构建 android webview 时遇到问题。问题是当应用程序正在运行并且手机改变方向时,我的意思是从水平到垂直,反之亦然,应用程序会重新启动。谢谢
【问题讨论】:
标签: android
默认行为是在屏幕方向改变时重新启动 Activity。不过,您可以编写自定义代码来自己处理方向更改事件:
android:configChanges="orientation" 添加到您的AndroidManifest.xml
onConfigurationChanged
【讨论】:
默认的 android 行为是在方向改变时销毁并重新创建活动。您可以覆盖onSaveInstanceState() 以在销毁之前保存您的应用程序数据,或者您可以调用onRetainNonConfigurationInstance() 来保留有状态对象。见the android docs。
【讨论】:
奥马尔,
您需要将android:configChanges="orientation" 参数添加到AndroidManifest.xml 中的Activity,以防止您的活动在方向更改时重新启动。
见:http://developer.android.com/guide/topics/manifest/activity-element.html#config
【讨论】:
另一种可能性(例如,通常非常适合在 WebView 之外没有状态的轻量活动)是吸收旋转事件并让视图重绘自身。见http://www.androidguys.com/2008/11/11/rotational-forces-part-three/ - 这个想法是:
将 android:configChanges 条目放入 您的文件,列出配置 你想自己处理的变化 与允许 Android 处理 你。
实现 onConfigurationChanged() 在您的活动中,这将被称为 当其中一项配置更改时 您在 android:configChanges 中列出 发生
【讨论】:
【讨论】:
umar... 保存实例状态在 Android 上是完全不同的。在软杀(电话轮换)上,您可以使用捆绑包将您的非视图状态保存在 onSaveInstanceState 中。在硬杀(活动具有焦点时的后退按钮)上,您可以选择在 onStop 中保存您的非视图和视图状态,也许使用首选项。您可以在 onCreate 中恢复您的状态。
您可以利用如果 onSaveInstanceState 被调用的事实,它将在 onStop 之前被调用。因此,这使您可以在 onSaveInstanceState 中将标志 isSavedInstanceState 设置为 true 以避免在 onStop 中保存首选项,除非是硬杀。诀窍是在 onResume 而不是 onCreate 中将标志 isSavedInstanceState 重置为 false。
日航
我有示例代码here。
【讨论】: