Android App开发:处理屏幕方向更改

时间:2013-11-20 03:56:31

标签: android android-layout

我遇到了处理屏幕方向更改的问题(例如:纵向到横向)。我正在开发一个手电筒应用程序,它有一个切换按钮,可以在人的手机上打开或关闭LED灯。我设置了我的onPause()方法来杀死应用程序,如下所示:         

    @Override
    protected void onPause() {
         super.onPause();
         finish();
    }

这是因为如果我要打开应用程序然后去做其他事情(比如打开youtube),然后再回来再次按下按钮就会崩溃。但是因为这个“完成();”我无法处理屏幕方向更改的事情,因为显然当它切换方向时,它会调用onPause()方法完成!

所以我的问题是......我该怎么做?我希望能够解决崩溃问题,但也不会在屏幕方向改变时崩溃。我不是要求代码(尽管它会有所帮助)只是从一组新的眼睛中获得一些见解。

我想过使用“if”语句......这会有用吗?

提前致谢, 安德鲁

1 个答案:

答案 0 :(得分:3)

当屏幕方向改变时,活动将再次执行onPause(),onStop()和onCreate()。如果您不希望您的活动在方向更改时执行onPause,请尝试以下操作:

  1. 在您的manifest.xml中,为您的活动添加android:configChanges =“orientation | keyboardHidden”,如:

    <activity android:name=".yourname"
              android:configChanges="orientation|keyboardHidden">
    </activity>
    
  2. 在您的活动中,覆盖此方法:

    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
    }
    
  3. 但我的建议是不要在finish()中使用onPause(),系统可以很好地处理生命周期。如果您想在按下主页或后退按钮时完成活动,请尝试覆盖onBackPress()onUserLeaveHint(),这两种方法可以回退并按下主页按钮,并在这些中添加finish()两种方法。

    希望它有所帮助。