2012-06-13 36 views
3

我檢查屏幕的方向使用視圖中:將使用新的常量打破我的Android應用程序?

getResources().getConfiguration().orientation 

的Android的新版本提供了更多的定向狀態,所以我想利用一個開關,所有我想要處理的狀態。

switch (getResources().getConfiguration().orientation) { 
    case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT: 
    case ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT: 
    case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE: 
    case ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE: 
} 

現在,這會打破舊設備上的應用程序?鑑於一些常量是API 9+的新增內容?我不確定,因爲我不確定編譯器如何處理常量(final static)。他們是內聯還是引用?我認爲,如果他們內聯,這種方法應該沒有問題。

感謝

回答

4

現在,這將打破舊設備的應用?

如果您按照自己的方式使用它們,則不是。 Java編譯器將在編譯時用它們的數字等值替換這些符號。

但是,您無法通過舊設備上的反射來獲取這些值,儘管這將是一種非常不尋常的技術。

+0

我正在研究Android文檔上的compat代碼,是的,他們使用相同的方法來檢測版本。有道理,常量是內聯:) – pablisco

+0

我喜歡它,當優化有有利的副作用。 – JAB

0

沒有,多餘的情況下也不會破壞你的應用程序,因爲

  1. 的變化將在編譯時
  2. 添加額外的情況下,在運行時這種情況下,將確定。
  3. 這就像一個額外的條件。
相關問題