为什么onCreate在从横向到纵向进行屏幕旋转时都会调用两次?

时间:2010-10-13 09:21:00

标签: android android-emulator

  

可能重复:
  Problems when handling orientation changes

我有一个非常简单的活动...

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。

0 个答案:

没有答案