【发布时间】:2011-05-31 16:31:31
【问题描述】:
我使用 jquerymobile 和 Phonegap 开发了一个简单的 Android 应用程序。 问题是,在更改轮换后,应用程序是否完全重新加载。 有可能防止这种重新加载吗?
非常感谢您的建议。
【问题讨论】:
我使用 jquerymobile 和 Phonegap 开发了一个简单的 Android 应用程序。 问题是,在更改轮换后,应用程序是否完全重新加载。 有可能防止这种重新加载吗?
非常感谢您的建议。
【问题讨论】:
这取决于您是要保持纵向模式,还是要切换方向但更快地重新加载。
如果您想保持纵向模式而不考虑设备的方向,请查看(例如)How do I disable orientation change on Android?。
如果您想更改方向,那么您将无法摆脱您的活动将以新方向重新启动的事实。这就是 Android 的工作原理。
您可以做的是在 Activity 被终止之前缓存您的应用所需的数据,然后在 Activity 以新方向重新启动时重新加载该缓存数据,从而显着加快该过程。为此,您需要 onRetainNonConfigurationInstance(),这篇文章 -- http://developer.android.com/resources/articles/faster-screen-orientation-change.html -- 解释了如何做到这一点。
【讨论】:
添加这个
android:configChanges="keyboardHidden|orientation"
进入清单的活动节点。
【讨论】:
所以这是一个phonegap问题,经过更多搜索:
添加
android:configChanges="orientation|keyboardHidden"
继承自 DroidGap 的 Activity 标签 (AndroidManifest.xml) 的参数。
方向仍然有效,但网页不会刷新。
【讨论】:
请覆盖这两种方法以防止您的网页(活动)重新加载,并在 Manifest.xml 文件中的 Web 视图活动中编写 android:configChanges="orientation|screenSize" 行的代码。
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
//Save the state of Webview
mWebView.saveState(savedInstanceState);
super.onSaveInstanceState(savedInstanceState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// Restore the state of webview
mWebView.restoreState(savedInstanceState);
}
mWebView 是你的 webview 对象。
【讨论】:
将此代码放入 AndroidManifest.xml 有助于:
android:configChanges="keyboardHidden|orientation|screenSize"
这篇文章的功劳:
【讨论】: