android:configChanges
16lz
2021-12-04
每次Power键的时候,app是会强制回到竖屏状态的,并且会重新调用Activity的onCreate(),当然很多时候这不是我们想要的。所以就需要用到android:configChanges了,在配置文件里设置android:configChanges="keyboardHidden|orientation",这样在屏幕方向改变的时候就不会重新调用Activity的onCreate(),而是调用onConfigurationChanged(),然后在Activity里重载下
publicvoidonConfigurationChanged(ConfigurationnewConfig){
super.onConfigurationChanged(newConfig);
if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
//横向
}else{
//竖向
}
}
一般就这么处理下就可以了,要命的是用到了SurfaceView,而SurfaceView和Thread的生命周期是不一样的,唉,这里要说一下Google提供的sample了,里边有bug!!
由于每次Power键的时候会调用SurfaceView的surfaceDestroyed(SurfaceHolderholder),但是回到app的时候又没有执行surfaceCreated(SurfaceHolderholder),于是就咯屁了~~
目前想到一个能解决的方案是在onConfigurationChanged(ConfigurationnewConfig)里手动处理,surfaceDestroyed(SurfaceHolderholder)+surfaceCreated(SurfaceHolderholder)+pause()处理。。。
唉,希望可以找到一个比较好的解决方案吧。
publicvoidonConfigurationChanged(ConfigurationnewConfig){
super.onConfigurationChanged(newConfig);
if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
//横向
}else{
//竖向
}
}
一般就这么处理下就可以了,要命的是用到了SurfaceView,而SurfaceView和Thread的生命周期是不一样的,唉,这里要说一下Google提供的sample了,里边有bug!!
由于每次Power键的时候会调用SurfaceView的surfaceDestroyed(SurfaceHolderholder),但是回到app的时候又没有执行surfaceCreated(SurfaceHolderholder),于是就咯屁了~~
目前想到一个能解决的方案是在onConfigurationChanged(ConfigurationnewConfig)里手动处理,surfaceDestroyed(SurfaceHolderholder)+surfaceCreated(SurfaceHolderholder)+pause()处理。。。
唉,希望可以找到一个比较好的解决方案吧。
更多相关文章
- Android(安卓)基础总结:(十一)ContentResolver与ContentProvider如
- Android事件处理的两种模型
- Android(安卓)4 游戏高级编程(第2版)
- Android消息机制分析
- 系出名门Android(10) - HTTP 通信, XML 解析, 通过 Hander 实现
- Android(安卓)Keyboard/Touch Panel分析
- android 按键
- Android(安卓)屏幕切换和onConfigurationChanged不调用的原因
- android AsyncTask学习