在onCreate中检查savedInstanceState是否为null是判断设备是否已旋转的好方法?

时间:2011-09-23 10:24:06

标签: android android-activity

我想在我的活动'onCreate()方法中做的事情只有在第一次构建它们时,而不是在设备被旋转时(在配置更改时)。目前我正在检查传入onCreate()的savedInstanceState参数。如果它为null,那么它是Activity第一次启动,否则只有一个旋转。

这是一个好的,可靠的方式来告诉这个吗?有替代品吗?

1 个答案:

答案 0 :(得分:3)

我不知道更好的解决方案。 Romain Guy描述same approach(检查savedInstance状态或您传递的其他对象为null)。

  

在新活动中,在onCreate()中,您需要做的就是获取您的所有活动   object back是调用getLastNonConfigurationInstance()。在   Photostream,调用此方法,如果返回的值不是   null,网格加载了前一张照片列表   活性:

private void loadPhotos() {
    final Object data = getLastNonConfigurationInstance();

    // The activity is starting for the first time, load the photos from Flickr
    if (data == null) {
        mTask = new GetPhotoListTask().execute(mCurrentPage);
    } else {
        // The activity was destroyed/created automatically, populate the grid
        // of photos with the images loaded by the previous activity
        final LoadedPhoto[] photos = (LoadedPhoto[]) data;
        for (LoadedPhoto photo : photos) {
            addPhoto(photo);
        }
    }
}

当我懒得这样做时,我只是禁用在方向更改时重新创建活动。如How do I disable orientation change on Android?

所述