2013-04-21 45 views
3

我的應用程序需要三個每defiend陣列來運行:一個字符串數組和兩個整數數組。每個陣列有100長度爲這些陣列添加到我的應用程序,我認爲以下兩種方法之一:在您的應用中硬編碼數組的最佳方式?

  • 他們硬編碼在Utils.java類作爲一個靜態的final變量和參考他們在我的活動,每當我需要他們。
  • 將它們放在res文件夾中,並在需要時構建陣列(使用getStringArray())。

現在,我想知道:

  1. 什麼是內存和效率方面的最佳方法?
  2. 第一種方法會增加我的應用程序所需的內存嗎?第二個會導致延誤和響應問題嗎?
  3. 我應該考慮更好的方法嗎?

回答

2

如果數組對每種語言都是相同的,我會在你的Utils類中使用硬編碼。這肯定是最快的方法,因爲如果你將它們作爲資源,你的應用程序必須在運行時讀取文件,這會比在代碼中慢得多。 您應用的總體規模將沒有太大變化,與每一個方法,你就會有數據的地方在你的應用的程序包。無論是在代碼中還是在資源中的文本文件中。實際上,由於代碼中的硬編碼整數以整數形式存儲爲二進制,所以它們需要的內存略少(在java中每個整數需要4個字節來存儲,而在文本文件中需要1000000000個整數則需要10個字節)

陣列是針對例如不同的語言不同,你應該使用資源的解決方案。

1

在文本文件或屬性文件存儲數據。一旦有這些細節的請求在陣列中閱讀。

然後您可以根據需要將它保存在內存中。

0

這是通常的時間與空間的權衡,我會結合你所提到的2接近。從資源文件加載陣列,並通過訪問它們一些預定義的getter方法,這可以讓你稍後改變你的方法,如果時間或空間成爲問題,我猜測它不會,沒有觸及使用陣列的代碼

1

我認爲將它們外部存放在一個文件中是一種更好的做法,主要是因爲您可以更輕鬆地更改它們,而無需推出新的代碼和可兼容性原因。例如,您可以在啓動時讀取它們,或者在需要(動態)Utils類時只讀一次,以獲得更高的效率。

如果你需要(或希望)從應用我會毫無疑問去與更高的效率的選擇(在啓動硬編碼/負載一次),如果字符串是比較小的快速響應。 200 Integers和100(小)Strings確實佔用了很小的空間。一個包含100個字符的String[100]將佔用大約24 kB,並且200 int將佔用824字節的內存(包括陣列對象開銷)。

相關問題