我想在我的活动'onCreate()方法中做的事情只有在第一次构建它们时,而不是在设备被旋转时(在配置更改时)。目前我正在检查传入onCreate()的savedInstanceState参数。如果它为null,那么它是Activity第一次启动,否则只有一个旋转。
这是一个好的,可靠的方式来告诉这个吗?有替代品吗?
答案 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?
所述