我正在開發一個顯示對象列表的Android應用程序。對於顯示的每個對象,我使用存儲在字符串成員中的信息填充幾個文本視圖。從Android應用程序中處理xml中的大量字符串的最佳方法?
的信息存儲在單獨的XML文件格式如下:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<string-array name="Object_Name">
<!-- Atribute 1 -->
<item ></item>
<!-- Atribute 2 -->
<item ></item>
<!-- Atribute 3 -->
<item ></item>
<!-- Atribute 4 -->
<item ></item>
<!-- Atribute 5 -->
<item ></item>
<!-- Atribute 6 -->
<item ></item>
<!-- Atribute 7 -->
<item ></item>
<!-- Atribute 8 -->
<item ></item>
<!-- Atribute 9 -->
<item ></item>
</string-array>
</resources>
我已經想到了兩種方式來處理這個問題在我的應用程序的信息:
應用程序啓動時,我創建了一個對象列表,並對每個
</string-array>
我已在我的xml文件中定義。我在對象成員中存儲來自<item>
的字符串。大約有250個這樣的對象,其中一些屬性包含大字符串(1000個或更多字符)。每次textviews需要被填充時,我用getter方法從對象中讀取字符串。當應用程序啓動時,我創建了一個對象列表,併爲每個
</string-array>
我定義了我的xml文件。我存儲</string-array>
的資源ID,但不讀取任何屬性。每次需要填充textview時,我都會讀取與該對象關聯的xml中的屬性並返回字符串。
第一種方法影響應用程序的啓動,因爲它需要一點時間來填充對象列表中與該數組中的信息,但有速度的效益一旦創建列表。此外,所有這些字符串可能都需要相當多的內存,而內存是智能手機上的寶貴資源。
第二種方法將減少應用程序啓動併爲對象列表使用較少的內存,因爲只存儲資源ID。我看到的缺點是,每次創建和填充文本視圖時,都會從xml文件中讀取內容。我假設從存儲介質讀取數據需要更長的時間,並且可能會讓應用感覺對用戶不利。
我對這兩種方法的分析是否正確?
你認爲我應該使用哪種方法?爲什麼?
是否有一些工具可以用來測量運行時和內存使用情況?
由於您需要顯示大量數據,並且將所有數據存儲在單獨的xml文件中。這不是存儲靜態字符串的正確方法。您可以使用SQLite數據庫來存儲大量數據。在使用數據庫的同時,您可以非常順利地訪問數據,並且加載所有數據花費的時間非常少。 –
你的意思是將數據存儲到SQLite數據庫而不是xml或從xml啓動時填充數據庫?在將它包含在我的應用中之前,是否有任何工具可以離線填充數據庫? – Sitram
檢查我添加的答案 –