在Android中,如果希望WebView页面在设备旋转时不销毁并重新加载,可以通过以下步骤实现:
在AndroidManifest.xml文件中,对应的Activity中添加如下配置:
android:configChanges="orientation|screenSize"
这将告诉系统在设备旋转或屏幕尺寸改变时不重新创建Activity。
android:configChanges
属性用于指定在哪些配置发生变化时,Activity不会被销毁和重新创建。
常见的配置变化包括:
orientation
:设备的方向变化,即横向或纵向。screenSize
:屏幕尺寸的变化,例如平板模式和手机模式之间的切换。keyboardHidden
:键盘的可见性变化,例如软键盘的显示或隐藏。locale
:语言设置的变化,例如用户切换了系统的语言。uiMode
:UI 模式的变化,例如夜间模式的切换。你可以在android:configChanges
属性中使用这些值的组合,多个值之间使用竖线(|
)进行分隔。
例如,如果希望Activity在设备旋转和屏幕尺寸变化时都不被销毁和重新创建,可以这样配置:
android:configChanges="orientation|screenSize"
这样,当设备的方向或屏幕尺寸发生变化时,Activity不会被销毁和重新创建,而是会调用onConfigurationChanged()
方法进行相应的处理。
只有上面的配置就可以了,如果想在设备旋转的时候处理一些东西可以覆盖onConfigurationChanged()方法,以处理配置更改事件。
在该方法中,你可以选择不执行任何操作,或者手动调整布局等。
以下是一个示例:
import android.content.res.Configuration;
import android.os.Bundle;
import android.webkit.WebView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("https://example.com");
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// 如果不想做任何事情,可以不在这个方法里面写任何代码
// 如果需要,可以在这里重新布局或者做其他的调整
}
}
这样,当设备旋转时,WebView页面将不会被销毁和重新加载。
Kotlin中
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
}