2013-10-23 34 views
0

我有很多大字符串,我只會在兩個地方使用(2種方法)。我可以在課堂上全局聲明它們,但擔心內存和動態內存分配會減慢應用程序的運行速度。在xml和java代碼中聲明字符串

即使我在strings.xml中聲明,我將不得不使用getResources().getString()來加載它們會在strings.xml中聲明它們會使事情更好嗎?記憶或速度。

我並不擔心本地化。

+0

你在做什麼需要如此精細調整的優化?這兩種存儲字符串的方法之間的性能差異將可以忽略不計。 –

回答

2

在我看來保持串爲strings.xml是一個更好的選擇

1)當你將幾乎保存了一些,你會在運行時創建的String對象。

2)易於管理所有的字符串在一個地方。 3)它更好地在編譯時而不是運行時分配資源。

+0

是的,確切地說。通過在運行時分配資源,您的意思是getResources()。getString()在運行時不會分配額外的內存嗎? – dcanh121

+0

不,它不會。它只是對資源中已經創建的字符串對象的引用。 –

0

在開發者的工作最主要的不在於他如何寫代碼,但他如何維持一個代碼,使更多的人可以在同一

保持所有字符串的工作在strings.xml中是更好的選項將它們保存在同一個文件中,並且對這些字符串進行編輯/修改將更容易。

+0

在Java代碼中創建最終的靜態字符串常量也是一種非常好的編碼方式。但它很好理解Android使用最有效的方式,並保持這種做法。 – dcanh121

+0

靜態常量是它們存在的類變量,只要應用程序保持運行狀態,並且不容易被gc清除。 – user2912614

+0

谷歌建議使用靜態最終常量https://developer.android.com/training/articles/perf-tips.html#UseFinal – dcanh121

-2

Strings.xml更具可維護性和最佳實踐,但是如果您關心的世界上唯一的事情是效率和速度,那麼它就是硬編碼。沒有正確的答案,我希望這個字符串不是你的公司名稱,例如他們會被買斷。