我有一个非常简单的活动...
public class ShowOrientation extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.d("ShowOrientation", "Orientation: " + getOrientation());
}
private String getOrientation() {
int o = getResources().getConfiguration().orientation;
if (o == 1)
return "PORTRAIT";
else if (o == 2)
return "LANDSCAPE";
else
return "*UNKNOWN!*";
}
}
当我在模拟器中运行Activity时,它以PORTRAIT模式启动。当我旋转屏幕时(通过数字键盘上的9按钮),我在日志文件中看到一个条目...
Orientation: LANDSCAPE
现在,如果我将屏幕旋转回PORTRAIT模式(通过数字键盘上的7按钮),这就是我在日志文件中看到的内容......
Orientation: LANDSCAPE
Orientation: PORTRAIT
然后如果我再次切换回LANDSCAPE,我会看到......
Orientation: LANDSCAPE
由于此记录是在onCreate(Bundle)中完成的,因此我只能假设从LANDSCAPE转换到PORTRAIT屏幕方向时,我的Activity被销毁/创建两次,而从PORTRAIT转到LANDSCAPE时只能执行一次!
我还是Android的新手,所以我可能会遗漏一些有关活动生命周期的内容,但是对我来说,在单向进行屏幕旋转时创建/销毁Activity两次似乎不对,但只有一次以另一种方式进行屏幕旋转。
我找到了错误吗?它应该以这种方式工作吗?或者我不知道有关活动生命周期的内容可以解释这个问题吗?
编辑:忘记提及,这是使用Android 2.2 api,Eclipse 3.5.2和Android SDK Rev. 7。