2011-08-04 80 views
2

我發現自己經常打字:getResources()或創建自己的靜態類?

someVar = getResources().getString(R.string.someString); 

我有我的解析和建設,以確保該文件保持一致幾個XML文件,我已經放在標籤名稱在res /價值/ strings.xml文件。同樣的手柄在幾個活動中,以及一些活動的延伸,ListActivity而另一些不那麼創建一個簡單的超類裏面有這些變量(例如:

public class thisClass extends thatClass 
{...} 

public class thatClass 
{ 
    package String someTag = "this"; 
    package String otherTag = "that"; 
} 

我會承擔所有這些調用getResources的()可以得到相當繁重的,並想知道,如果它是有益的,而不是建立一個R-類型的文件,我可以存儲這些類型的常用變量的靜態前:

​​

,並引用這些變量,像這樣:

serializer.startTag("", globalVars.XML_TAGS.someTag); 

代替

serializer.startTag("", getResources().getString(R.string.someTag)); 

感謝您的輸入!

回答

4

OK,尋找到的android.content.res.resources源代碼和一些其他類後,顯而易見的是,通過使用getResources()資源和獲得資源相比靜態類是昂貴

事實上,返回的Resources實例不是一個靜態容器,而是一個通過執行幾個語句(無論是字符串還是可繪製的或任何其他形式)來獲取資源的對象。

然而使用getResources()有它的優點

  • 它可以幫助你外部化的資源
  • 對於任何類型的資源,您可以指定默認和地點屏幕深度可能取決於/分辨率多個替代資源...

一個static容器可能會提供比使用成本更低的替代方案資源,但請記住:任何稍後的本地化嘗試都會相對非常昂貴。