在方向改变期间保持参考

时间:2014-03-19 05:58:08

标签: android android-fragments camera

我使用的是Camera,我在活动open中调用了onCreate方法。当活动被销毁时,我释放Camera。但是,活动中的片段可能正在使用Camera(例如,使闪烁重复闪烁),因此当方向从纵向更改为横向时,例如,Camera被释放(因为活动被销毁)并且引用设置为null,导致从片段中抛出NPE。如何在方向更改期间保持对Camera的引用(以便闪光灯保持闪烁)在活动被销毁时释放Camera(例如,用户点击后退按钮)?

public static Camera camera = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main_activity);

  if (camera == null) {
    camera = Camera.open();
    if (camera == null) {
      Log.e(LOG_TAG, "Unable to get back-facing camera.");
      finish();
    }
  }
  // ..
}

@Override
protected void onDestroy() {
  if (camera != null) {
    camera.release();
    camera = null;
  }
  super.onDestroy();
}

1 个答案:

答案 0 :(得分:0)

试试这个android:configChanges="keyboardHidden|orientation"

对于api 13或更高版本android:configChanges="keyboardHidden|orientation|screenSize"
从api 13开始,当设备在纵向和横向模式之间切换时,屏幕尺寸也会发生变化

因此,这种方式不会在方向更改期间销毁您的活动