android:configChanges

来源:互联网 发布:淘宝闲鱼珠宝拍卖真假 编辑:程序博客网 时间:2024/05/22 14:51
  每次Power键的时候,app是会强制回到竖屏状态的,并且会重新调用Activity的onCreate(),当然很多时候这不是我们想要的。所以就需要用到android:configChanges了,在配置文件里设置 android:configChanges="keyboardHidden|orientation",这样在屏幕方向改变的时候就不会重新调用 Activity的onCreate(),而是调用onConfigurationChanged(),然后在Activity里重载下

  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)+surfaceCreated(SurfaceHolder holder)+pause()处理。。。
  唉,希望可以找到一个比较好的解决方案吧。