2014-07-08 14 views
1

我正在開發一個顯示對象列表的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> 

我已經想到了兩種方式來處理這個問題在我的應用程序的信息:

  1. 應用程序啓動時,我創建了一個對象列表,並對每個</string-array>我已在我的xml文件中定義。我在對象成員中存儲來自<item>的字符串。大約有250個這樣的對象,其中一些屬性包含大字符串(1000個或更多字符)。每次textviews需要被填充時,我用getter方法從對象中讀取字符串。

  2. 當應用程序啓動時,我創建了一個對象列表,併爲每個</string-array>我定義了我的xml文件。我存儲</string-array>的資源ID,但不讀取任何屬性。每次需要填充textview時,我都會讀取與該對象關聯的xml中的屬性並返回字符串。

第一種方法影響應用程序的啓動,因爲它需要一點時間來填充對象列表中與該數組中的信息,但有速度的效益一旦創建列表。此外,所有這些字符串可能都需要相當多的內存,而內存是智能手機上的寶貴資源。

第二種方法將減少應用程序啓動併爲對象列表使用較少的內存,因爲只存儲資源ID。我看到的缺點是,每次創建和填充文本視圖時,都會從xml文件中讀取內容。我假設從存儲介質讀取數據需要更長的時間,並且可能會讓應用感覺對用戶不利。

我對這兩種方法的分析是否正確?

你認爲我應該使用哪種方法?爲什麼?

是否有一些工具可以用來測量運行時和內存使用情況?

+1

由於您需要顯示大量數據,並且將所有數據存儲在單獨的xml文件中。這不是存儲靜態字符串的正確方法。您可以使用SQLite數據庫來存儲大量數據。在使用數據庫的同時,您可以非常順利地訪問數據,並且加載所有數據花費的時間非常少。 –

+0

你的意思是將數據存儲到SQLite數據庫而不是xml或從xml啓動時填充數據庫?在將它包含在我的應用中之前,是否有任何工具可以離線填充數據庫? – Sitram

+0

檢查我添加的答案 –

回答

0

由於您有很多數據要顯示,並且您將所有數據存儲在單獨的xml文件中。這不是存儲靜態字符串的正確方法。您可以使用SQLite數據庫來存儲大量數據。在使用數據庫的同時,您可以非常順利地訪問數據,並且加載所有數據花費的時間非常少。

爲了避免內存和性能問題,您需要使用數據庫。

是的,你可以在設備中使用離線數據庫。

檢查以下鏈接使用SQLite數據庫 http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

+1

使用數據庫是存儲和加載大量數據的最佳選擇,速度和最佳性能。 –

+0

我會看看這個選項,感謝您的建議 – Sitram

+0

我有在數據庫中準備的表,現在我正在研究一個小的java程序來解析xml文件並創建sql命令來使用這些信息填充數據庫。 – Sitram

0

最好的方法ID列表視圖,怎麼一旦你把AA列表視圖中的XML,你可以給在java中值的n個,關聯到該列表視圖

+0

我使用ViewPager爲每個對象顯示片段。我無法在佈局xmls中存儲那麼多ListView。 – Sitram

相關問題