如何在android中保留活动状态

时间:2011-10-16 07:05:37

标签: android

如何在android中保留活动的状态?我在布局和布局方面有两种纵向和横向布局。我正在显示进度对话框时从服务加载值。如果加载的用户在加载时将设备旋转到横向。我该如何避免? webview中的用户输入内容也会刷新。如何避免这种情况,有人可以提供一个例子吗?

由于

3 个答案:

答案 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”