2011-05-31 64 views
2

我使用jquerymobile和Phonegap开发了一个简单的Android应用程序。 问题是,更改旋转后,应用程序完全重新加载。 是否有可能阻止此重新加载?如何防止更改后旋转jquerymobile

非常感谢您的任何建议。

回答

4

这取决于您是要保持纵向模式,还是要切换方向,但要更快地重新加载。

如果您想保持纵向模式而不考虑设备的方向,请查看(例如)How do I disable orientation change on Android?

如果您想改变方向,那么您无法摆脱这样一个事实,即您的活动将以新的方向重新开始。这就是Android的工作原理。

您可以做的是在活动被终止之前缓存您的应用需要的数据,然后在新方向重新启动活动后立即重新加载缓存的数据,从而显着加快进程速度。为此,您需要onRetainNonConfigurationInstance(),而本文 - http://developer.android.com/resources/articles/faster-screen-orientation-change.html - 解释了如何做到这一点。

+1

FYI现在出现在Android的一个 “片段” 的概念,可用于Android 3.0,取代了这种方法:http://developer.android.com/guide/topics/fundamentals/fragments.html – esilver 2011-11-14 06:35:39

+0

链接更新:http://android-developers.blogspot.co.uk/2009/02 /F aster-screen-orientation-change.html – Onimusha 2013-03-11 00:20:15

2

添加此

android:configChanges="keyboardHidden|orientation" 

到您清单的活动节点。

1

所以这是一个问题的PhoneGap和搜索一点点后:

添加

android:configChanges="orientation|keyboardHidden" 

参数,从DroidGap沿用活动标签(AndroidManifest.xml)。

方向仍然有效,但网页不会被刷新。

+1

这对Cordova 2.7.0和Android 4.0.3下的我不起作用。与科尔多瓦2.3.0相同。 该网页完全重新启动,然后崩溃的经典JNI本地参考表溢出错误,因为数据是以某种方式重复..(另一个问题,我没有答案) – 2013-05-08 07:12:00

0

请覆盖这两种方法来防止您的网页(活动)重新加载,并在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对象。