2014-03-19 33 views
1

我正在使用Camera,並且我在其中調用onCreate中的open方法。當活動被破壞時,我釋放Camera。但是,活動中的片段可能正在使用Camera(例如,使閃光燈重複閃爍),因此,例如,當方向從縱向更改爲橫向時,會釋放Camera(因爲活動已被銷燬),並且參考被設置爲空,導致從片段拋出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(); 
} 

回答

0

試試這個android:configChanges="keyboardHidden|orientation"

對於API 13或更高android:configChanges="keyboardHidden|orientation|screenSize"
稱爲API 13的屏幕尺寸也改變時縱向和橫向模式之間的設備切換

所以這樣的活動不會在方向變化期間被破壞

+0

這個問題的關鍵是,你告訴android你將在你的活動中處理這些變化,並且不需要實現默認t行爲 – BlackBeard

相關問題