如何防止更改后旋转jquerymobile
我使用jquerymobile和Phonegap开发了一个简单的Android应用程序。 问题是,更改旋转后,应用程序完全重新加载。 是否有可能阻止此重新加载?如何防止更改后旋转jquerymobile
非常感谢您的任何建议。
这取决于您是要保持纵向模式,还是要切换方向,但要更快地重新加载。
如果您想保持纵向模式而不考虑设备的方向,请查看(例如)How do I disable orientation change on Android?。
如果您想改变方向,那么您无法摆脱这样一个事实,即您的活动将以新的方向重新开始。这就是Android的工作原理。
您可以做的是在活动被终止之前缓存您的应用需要的数据,然后在新方向重新启动活动后立即重新加载缓存的数据,从而显着加快进程速度。为此,您需要onRetainNonConfigurationInstance()
,而本文 - http://developer.android.com/resources/articles/faster-screen-orientation-change.html - 解释了如何做到这一点。
添加此
android:configChanges="keyboardHidden|orientation"
到您清单的活动节点。
所以这是一个问题的PhoneGap和搜索一点点后:
添加
android:configChanges="orientation|keyboardHidden"
参数,从DroidGap沿用活动标签(AndroidManifest.xml
)。
方向仍然有效,但网页不会被刷新。
这对Cordova 2.7.0和Android 4.0.3下的我不起作用。与科尔多瓦2.3.0相同。 该网页完全重新启动,然后崩溃的经典JNI本地参考表溢出错误,因为数据是以某种方式重复..(另一个问题,我没有答案) – 2013-05-08 07:12:00
请覆盖这两种方法来防止您的网页(活动)重新加载,并在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"
幸得这篇文章:
FYI现在出现在Android的一个 “片段” 的概念,可用于Android 3.0,取代了这种方法:http://developer.android.com/guide/topics/fundamentals/fragments.html – esilver 2011-11-14 06:35:39
链接更新:http://android-developers.blogspot.co.uk/2009/02 /F aster-screen-orientation-change.html – Onimusha 2013-03-11 00:20:15