如何在android中保留活动的状态?我在布局和布局方面有两种纵向和横向布局。我正在显示进度对话框时从服务加载值。如果加载的用户在加载时将设备旋转到横向。我该如何避免? webview中的用户输入内容也会刷新。如何避免这种情况,有人可以提供一个例子吗?
由于
答案 0 :(得分:1)
当方向更改时,默认情况下会重新加载活动。如果您不想要此行为,请将其添加到清单中的活动定义:
机器人:configChanges = “取向| keyboardHidden”
有关详细信息,请参阅Handling Runtime Changes
答案 1 :(得分:0)
您可以使用onRetainNonConfigurationChange()
回调来存储任意数据。它就在您的应用程序即将重新创建之前调用。
然后,在onCreate()
中,只需通过调用getLastNonConfigurationInstance()
来检查是否放置了一些数据,这些数据会返回您放置的对象或null。
请参阅Android开发者的this article。
以下是从上面的链接借来的样本:
@Override
public Object onRetainNonConfigurationInstance() {
//this is called by the framework when needed
//Just return what you want to save here.
return MyBigObjectThatContainsEverythingIWantToSave;
}
自动恢复以前保存的状态:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final MyDataObject MyBigObjectThatContainsEverythingIWantToSave = (MyDataObject) getLastNonConfigurationInstance();
if (MyBigObjectThatContainsEverythingIWantToSave == null) {
//No saved state
MyBigObjectThatContainsEverythingIWantToSave = loadMyData();
} else {
//State was restored, no need to download again.
}
...
}
答案 2 :(得分:0)
当方向更改时,默认情况下会重新加载活动。如果您不想要此行为,请将其添加到您的Android清单文件中的Activity定义:
机器人:configChanges = “取向|屏幕尺寸| keyboardHidden”