我遇到了处理屏幕方向更改的问题(例如:纵向到横向)。我正在开发一个手电筒应用程序,它有一个切换按钮,可以在人的手机上打开或关闭LED灯。我设置了我的onPause()方法来杀死应用程序,如下所示:
@Override
protected void onPause() {
super.onPause();
finish();
}
这是因为如果我要打开应用程序然后去做其他事情(比如打开youtube),然后再回来再次按下按钮就会崩溃。但是因为这个“完成();”我无法处理屏幕方向更改的事情,因为显然当它切换方向时,它会调用onPause()方法完成!
所以我的问题是......我该怎么做?我希望能够解决崩溃问题,但也不会在屏幕方向改变时崩溃。我不是要求代码(尽管它会有所帮助)只是从一组新的眼睛中获得一些见解。
我想过使用“if”语句......这会有用吗?
提前致谢, 安德鲁
答案 0 :(得分:3)
当屏幕方向改变时,活动将再次执行onPause(),onStop()和onCreate()。如果您不希望您的活动在方向更改时执行onPause,请尝试以下操作:
在您的manifest.xml中,为您的活动添加android:configChanges =“orientation | keyboardHidden”,如:
<activity android:name=".yourname"
android:configChanges="orientation|keyboardHidden">
</activity>
在您的活动中,覆盖此方法:
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
但我的建议是不要在finish()
中使用onPause()
,系统可以很好地处理生命周期。如果您想在按下主页或后退按钮时完成活动,请尝试覆盖onBackPress()
和onUserLeaveHint()
,这两种方法可以回退并按下主页按钮,并在这些中添加finish()
两种方法。
希望它有所帮助。