安卓 - setRequestedOrientation - Activity和视图生命周期

5

我在使用JNI时遇到了一些问题,怀疑是由于调用了setRequestedOrientation()引起的。

当我调用setRequestedOrientation()时,活动会发生什么?它只是重新启动还是完全销毁?

此外,视图会发生什么变化?如果在onCreate中有以下代码:

protected void onCreate( Bundle savedInstanceState )
{
    super.onCreate( savedInstanceState );

    try
    {
        this.setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE );

        setContentView( R.layout.activity_XXX );
        mTermScreenView = (TermScreenView) findViewById( R.id.termScreenView );

View对象会发生什么?它是否会被重新创建?当我调用findViewById()时,它是否已经存在?在屏幕旋转后,另一个View是否会被重新创建?

2个回答

8
当您使用setRequestedOrientation()时,视图可能会重新启动。http://developer.android.com/reference/android/app/Activity.html#setRequestedOrientation(int) 更改此活动的所需方向。如果该活动当前在前台或以其他方式影响屏幕方向,则屏幕将立即更改(可能导致活动重新启动)。否则,这将在下次活动可见时使用。
当您旋转屏幕或更改方向时,默认情况下Android会销毁并重新创建视图。http://developer.android.com/guide/topics/resources/runtime-changes.html

感谢您的帮助。 - Virus721

0

SetRequestedOrientation 需要小心使用。关于“视图可能会重新启动”的声明需要一些解释。

程序将运行到完成 - 在 Activity 生命周期中停止,然后重新启动 - 循环回到 Activity 生命周期的开始。

第一次运行将使用起始方向(通常为 SCREEN_ORIENTATION_UNKNOWN)和请求的方向(通常为 SCREEN_ORIENTATION_LANDSCAPE)。

因此,例如:

static int i;
...
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
...
    i++;
...
dosomething(i);

将以横向模式运行,其中i == 2


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接