摘自:
http://nwhy.org/android-configchanges.html
这是hipak那边测试反馈回来的一个问题,说来惭愧,一直没注意到这个问题的存在。以为Power键就是onPause处理就完了,结果不是。
这里边google的设计或许也有点问题,在竖屏情况下也许是一样处理的,不过当你的app是横屏,那就要注意了。
每次Power键的时候,app是会强制回到竖屏状态的,并且会重新调用Activity的onCreate(),当然很多时候这不是我们想要的。所以就需要用到android:configChanges了,在配置文件里设置android:configChanges="keyboardHidden|orientation",这样在屏幕方向改变的时候就不会重新调用Activity的onCreate(),而是调用onConfigurationChanged(),然后在Activity里重载下
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
//横向
}else{
//竖向
}
}
一般就这么处理下就可以了,要命的是用到了SurfaceView,而SurfaceView和Thread的生命周期是不一样的,唉,这里要说一下Google提供的sample了,里边有bug!!
由于每次Power键的时候会调用SurfaceView的surfaceDestroyed(SurfaceHolder holder),但是回到app的时候又没有执行surfaceCreated(SurfaceHolder holder),于是就咯屁了~~
目前想到一个能解决的方案是在onConfigurationChanged(Configuration newConfig)里手动处理,surfaceDestroyed(SurfaceHolder holder)+urfaceCreated(SurfaceHolder holder)+pause()处理。。。
唉,希望可以找到一个比较好的解决方案吧。
分享到:
相关推荐
详细介绍了手机在切换横竖屏时Activity生命周期的变化。
部分网友会发现Activity在切换到后台或布局从横屏LANDSCAPE切换到PORTRAIT,会重新切换Activity会触发一次onCreate方法,使用其他的方法同样可以实现
android studio中 activity的当前页横竖屏切换、跳转页面后横竖屏切换以及生命周期的调用
Android 横竖屏切换 利用Android系统每次屏幕切换会重启Activity的特性,在OnCreat处自动加载不同显示状态下的layout。
activity横竖屏切换时重新onCreate的处理。
android activity 执行屏幕横竖屏切换的时候activity声明周期执行的竖屏的时候点击横屏 09-04 15:54:27.675: I/yxd(6708): 应用程序执行了============onPause===方法===>> 09-04 15:54:27.685: I/yxd(6708): 应用...
实现在 listView中播放视频,利用 mediaPlayer + textureView 实现,支持横竖屏切换,切换操作是在同一个 activity 中进行的,类似腾讯新闻的视频播放, 实现思路可以看下我的博客: ...
Activity中嵌套多个Fragment,利用ViewPager实现左右滑动,使用两个Activity实现横竖屏切换案例。横屏与竖屏布局不一样。
1)在res目录下建立layout-land和layout-port目录,相应的layout文件名不变,比如:layout-land是横屏的layout,layout-port是竖屏的layout,其他的不用管,横竖屏切换时程序调用Activity的onCreate方法中的...
本篇文章主要介绍了android中Activity横竖屏切换的那些事,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Activity 横竖屏切换时需要回调两个函数 ,所以在此将这个两个函数暂时看成是Activity 横竖屏切换的生命周期的一部分,这两个函数如下 onSaveInstanceState(Bundle outState) :Activity 即将销毁时保存数据 ...
关于Activity生命周期和横竖屏切换时,生命周期的执行过程,网上有很多文章。但是都写的很模糊,并且不完善。一般的我们去切换屏幕方向都是不希望Activity被重新创建,这时就需要对一些属性进行设置,或者使用代码...
本文实例讲述了Android开发使用Activity嵌套多个Fragment实现横竖屏切换功能的方法。分享给大家供大家参考,具体如下: 一、上图 二、需求 近期项目遇到个横竖屏切换的问题,较为复杂,在此记之。 1、Activity中竖...
1、新建一个Activity,并把各个生命周期打印出来 2、运行Activity,得到如下信息 onCreate–> onStart–> onResume–> 3、按crtl+f12切换成横屏时 onSaveInstanceState–> onPause–> onStop–> onDestroy–> ...
偶然在项目中用到播放视频时,需要横屏将视频全屏播放,所以需要监听屏幕的横竖屏切换事件。 横竖屏切换监听效果: ConfigChanges,用于捕获手机状态的改变,当横竖屏切换,屏幕尺寸变化,弹出键盘,系统设置改变...
Activity 的生命周期 以及 横屏竖屏切换时 Activity 的状态变化 例如: 切换到横屏 onSaveInstanceState onPause onStop onDestroy onCreate onStart onRestoreInstanceState onResume
在AndroidManifest.xml的activity(需要禁止转向的activity)配置中加入android:screenOrientation=”landscape”属性即可(landscape是横向,portrait是纵向)。例如: <?xml version=1.0 encoding=utf-8?> &...
本文实例讲述了Android编程实现横竖屏切换时不销毁当前activity和锁定屏幕的方法。分享给大家供大家参考,具体如下: 首先在Mainifest.xml的Activity元素中加入android:configChanges=”orientation|keyboardHidden...